Спам и рейтинг товара
Доброго дня всем.
В связи с тем, что спамеры довольно часто пробивают капчу и оставляют спам сообщения в комментариях, решил не бороться с этим, а заработать небольшой плюс для своих товаров. Прошу обсудить прорехи и минусы.
И так
1) поставил в настройках магазина публикацию комментария после проверки и убрал капчу.
2) в xsl магазин товар вывел рейтинг с количеством голосов:
3) подредактировал темплейт вывода комментария
Итог:
для товаров зарабатывается рейтинг, и всех проголосовавших посетитель сайта может видеть.
надоест включу капчу + доп защиту
тут пример как выглядит:
В связи с тем, что спамеры довольно часто пробивают капчу и оставляют спам сообщения в комментариях, решил не бороться с этим, а заработать небольшой плюс для своих товаров. Прошу обсудить прорехи и минусы.
И так
1) поставил в настройках магазина публикацию комментария после проверки и убрал капчу.
2) в xsl магазин товар вывел рейтинг с количеством голосов:
<!-- Средняя оценка элемента -->
<xsl:if test="comments_average_grade/node() and comments_average_grade != 0">
<span><br>Средняя оценка: <xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="comments_average_grade"/>
<xsl:with-param name="const_grade" select="5"/></xsl:call-template> / количество оценок: <xsl:value-of select="comments_grade_count" /></br></span>
</xsl:if>
<xsl:if test="comments_average_grade/node() and comments_average_grade != 0">
<span><br>Средняя оценка: <xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="comments_average_grade"/>
<xsl:with-param name="const_grade" select="5"/></xsl:call-template> / количество оценок: <xsl:value-of select="comments_grade_count" /></br></span>
</xsl:if>
3) подредактировал темплейт вывода комментария
<!-- Отображение комментариев -->
<xsl:template match="comment">
<!-- Отображаем комментарий, если задан текст или тема комментария или есть оценка -->
<xsl:if test="text != '' or subject != '' or grade != 0">
<a name="comment{@id}"></a>
<div class="comment" id="comment{@id}">
<xsl:if test="subject != ''">
<div class="subject" hostcms:id="{@id}" hostcms:field="subject" hostcms:entity="comment"><xsl:value-of select="subject"/></div>
</xsl:if>
<div hostcms:id="{@id}" hostcms:field="text" hostcms:entity="comment" hostcms:type="wysiwyg"><xsl:value-of select="text" disable-output-escaping="yes"/></div>
<p class="tags">
<img src="/images/user.png" />
<xsl:choose>
<!-- Комментарий добавил авторизированный пользователь -->
<xsl:when test="count(siteuser) > 0">
<span><a href="/users/info/{siteuser/login}/"><xsl:value-of select="siteuser/login"/></a></span>
</xsl:when>
<!-- Комментарй добавил неавторизированный пользователь -->
<xsl:otherwise>
<span><xsl:value-of select="author" /></span>
</xsl:otherwise>
</xsl:choose>
 
<xsl:choose>
<!-- если мы оставили тему или текст спамовского сообщения то пусто -->
<xsl:when test="text != '' or subject != ''">
</xsl:when>
<!-- если мы оставили только оценку комментария то выводим и телефон автора и электронку автора -->
<xsl:otherwise>
тел.: <xsl:value-of select="phone"/> 
e.mail.: <xsl:value-of select="email"/> 
</xsl:otherwise>
</xsl:choose>
<!-- Оценка комментария -->
<xsl:if test="grade != 0">
<span><xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="grade"/>
<xsl:with-param name="const_grade" select="5"/>
</xsl:call-template></span> 
</xsl:if>
 <br/><img src="/images/calendar.png" /> <span><xsl:value-of select="datetime"/></span>
<xsl:if test="/shop/show_add_comments/node()
and ((/shop/show_add_comments = 1 and /shop/siteuser_id > 0)
or /shop/show_add_comments = 2)">
<span class="red" onclick="$('.comment_reply').hide('slow');$('#cr_{@id}').toggle('slow')">ответить</span></xsl:if>
<span class="red"><a href="{/shop/shop_item/url}#comment{@id}" title="Ссылка на комментарий">#</a></span>
</p>
</div>
<!-- Отображаем только авторизированным пользователям -->
<xsl:if test="/shop/show_add_comments/node() and ((/shop/show_add_comments = 1 and /shop/siteuser_id > 0) or /shop/show_add_comments = 2)">
<div class="comment_reply" id="cr_{@id}">
<xsl:call-template name="AddCommentForm">
<xsl:with-param name="id" select="@id"/>
</xsl:call-template>
</div>
</xsl:if>
<!-- Выбираем дочерние комментарии -->
<xsl:if test="count(comment)">
<div class="comment_sub">
<xsl:apply-templates select="comment"/>
</div>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="comment">
<!-- Отображаем комментарий, если задан текст или тема комментария или есть оценка -->
<xsl:if test="text != '' or subject != '' or grade != 0">
<a name="comment{@id}"></a>
<div class="comment" id="comment{@id}">
<xsl:if test="subject != ''">
<div class="subject" hostcms:id="{@id}" hostcms:field="subject" hostcms:entity="comment"><xsl:value-of select="subject"/></div>
</xsl:if>
<div hostcms:id="{@id}" hostcms:field="text" hostcms:entity="comment" hostcms:type="wysiwyg"><xsl:value-of select="text" disable-output-escaping="yes"/></div>
<p class="tags">
<img src="/images/user.png" />
<xsl:choose>
<!-- Комментарий добавил авторизированный пользователь -->
<xsl:when test="count(siteuser) > 0">
<span><a href="/users/info/{siteuser/login}/"><xsl:value-of select="siteuser/login"/></a></span>
</xsl:when>
<!-- Комментарй добавил неавторизированный пользователь -->
<xsl:otherwise>
<span><xsl:value-of select="author" /></span>
</xsl:otherwise>
</xsl:choose>
 
<xsl:choose>
<!-- если мы оставили тему или текст спамовского сообщения то пусто -->
<xsl:when test="text != '' or subject != ''">
</xsl:when>
<!-- если мы оставили только оценку комментария то выводим и телефон автора и электронку автора -->
<xsl:otherwise>
тел.: <xsl:value-of select="phone"/> 
e.mail.: <xsl:value-of select="email"/> 
</xsl:otherwise>
</xsl:choose>
<!-- Оценка комментария -->
<xsl:if test="grade != 0">
<span><xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="grade"/>
<xsl:with-param name="const_grade" select="5"/>
</xsl:call-template></span> 
</xsl:if>
 <br/><img src="/images/calendar.png" /> <span><xsl:value-of select="datetime"/></span>
<xsl:if test="/shop/show_add_comments/node()
and ((/shop/show_add_comments = 1 and /shop/siteuser_id > 0)
or /shop/show_add_comments = 2)">
<span class="red" onclick="$('.comment_reply').hide('slow');$('#cr_{@id}').toggle('slow')">ответить</span></xsl:if>
<span class="red"><a href="{/shop/shop_item/url}#comment{@id}" title="Ссылка на комментарий">#</a></span>
</p>
</div>
<!-- Отображаем только авторизированным пользователям -->
<xsl:if test="/shop/show_add_comments/node() and ((/shop/show_add_comments = 1 and /shop/siteuser_id > 0) or /shop/show_add_comments = 2)">
<div class="comment_reply" id="cr_{@id}">
<xsl:call-template name="AddCommentForm">
<xsl:with-param name="id" select="@id"/>
</xsl:call-template>
</div>
</xsl:if>
<!-- Выбираем дочерние комментарии -->
<xsl:if test="count(comment)">
<div class="comment_sub">
<xsl:apply-templates select="comment"/>
</div>
</xsl:if>
</xsl:if>
</xsl:template>
Итог:
для товаров зарабатывается рейтинг, и всех проголосовавших посетитель сайта может видеть.
надоест включу капчу + доп защиту
тут пример как выглядит:
Авторизация