Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль "комментарии в категориях"


Recommended Posts

Здравствуйте, нужно создать модуль возможности комментирования в категориях интернет магазина. ТО есть на странице категории будет форма с комментариями. Выглядеть она должна вот так - http://joxi.ru/l2ZNG0fw6WL62J .

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

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

Также (правда тут не отрисовано)  должна быть возможность оставить ответ администрации, по необходимости. ответ будет ниже под комментарием, как абзац. 

 

Цену не пишу, не знаю во сколько может обойтись.  Жду обратной связи

Спасибо   

Надіслати
Поділитися на інших сайтах


Попадете под бан Google - 100% (в ручную, если заметят или кто "настучит")
Наблюдал у пользователей баны за такое (по стучалке конкурентов)
Google считает что комментарии могут быть только к записям блога, товарам, отзывы о магазине
Остальное переспам seo "оптимизации"

 

Надіслати
Поділитися на інших сайтах

34 минуты назад, markimax сказал:

Попадете под бан Google - 100% (в ручную, если заметят или кто "настучит")
Наблюдал у пользователей баны за такое (по стучалке конкурентов)
Google считает что комментарии могут быть только к записям блога, товарам, отзывы о магазине
Остальное переспам seo "оптимизации"

 

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

У меня немного другая ситуация, у меня категория - это 1 товар, которого можно купить разное количество. То есть 1 товар, разное количество и разная цена соответственно. Товарных позиций далее нету. 

По сути - у меня категория - это товарная позиция, там придраться нельзя. 

Надіслати
Поділитися на інших сайтах


18 минут назад, Ssilver сказал:

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

У меня немного другая ситуация, у меня категория - это 1 товар, которого можно купить разное количество. То есть 1 товар, разное количество и разная цена соответственно. Товарных позиций далее нету. 

По сути - у меня категория - это товарная позиция, там придраться нельзя. 

Да несколько другая ситуация, но смотрите сами
Если кто настучит - кто его знает как админы Google  поведут себя

Вообще делали комментарии к категориям через

 

 

Надіслати
Поділитися на інших сайтах

1 час назад, Ssilver сказал:

Цену не пишу, не знаю во сколько может обойтись.  Жду обратной связи

Если Опенкарт 3, то 1400 руб.

Если другая версия, то не интересно.

Надіслати
Поділитися на інших сайтах

27 минут назад, Ssilver сказал:

По сути - у меня категория - это товарная позиция, там придраться нельзя. 

Вот демо Отзывы к категории

https://oc2.opencartadmin.com/desktops/

 

Спойлер

0875171989.jpg

 

Надіслати
Поділитися на інших сайтах

1 час назад, Ssilver сказал:

Version 2.3.0.2

Сорри, со старьем не работаю. Ищите олдскульного разраба..

Там работы на полтора часа и это будет чисто модификатор OCMOD с install.sql для создания колонки в таблице отзывов для категорий. Успехов!

Надіслати
Поділитися на інших сайтах

12 минут назад, optimlab сказал:

Сорри, со старьем не работаю. Ищите олдскульного разраба..

Че так рано списал 2.3?

Надіслати
Поділитися на інших сайтах


Без комментариев
opencart 3 и twig

Вот что создает twig из самого простого шаблона (напоминать какие шаблоны в opencart я думаю не надо)

{% extends "base.html" %}

{% block title %}Серия романов о Гарри Поттере{% endblock %}

{% block content %}
<h1>Серия романов о Гарри Поттере</h1>

<div id="books">
    {% for book in books %}
    <div class="book">
    	<strong>{{book.number}}</strong>. "<em>{{book.title}}"</em> - {{book.date}}
    </div>
    {% endfor %}
</div>
{% endblock %}

И занавес

 

Спойлер

 


<?php

/* list.html */
class __TwigTemplate_0272d28026bf48193b3efa17cc06cc64 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = $this->env->loadTemplate("base.html");

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doGetParent(array $context)
    {
        return "base.html";
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }

    // line 5
    public function block_title($context, array $blocks = array())
    {
        echo "Серия романов о Гарри Поттере";
    }

    // line 7
    public function block_content($context, array $blocks = array())
    {
        // line 8
        echo "<h1>Серия романов о Гарри Поттере</h1>

<div id=\"books\">
    ";
        // line 11
        if (isset($context["books"])) { $_books_ = $context["books"]; } else { $_books_ = null; }
        $context['_parent'] = (array) $context;
        $context['_seq'] = twig_ensure_traversable($_books_);
        foreach ($context['_seq'] as $context["_key"] => $context["book"]) {
            // line 12
            echo "    <div class=\"book\">
    \t<strong>";
            // line 13
            if (isset($context["book"])) { $_book_ = $context["book"]; } else { $_book_ = null; }
            echo twig_escape_filter($this->env, $this->getAttribute($_book_, "number"), "html", null, true);
            echo "</strong>. \"<em>";
            if (isset($context["book"])) { $_book_ = $context["book"]; } else { $_book_ = null; }
            echo twig_escape_filter($this->env, $this->getAttribute($_book_, "title"), "html", null, true);
            echo "\"</em> - ";
            if (isset($context["book"])) { $_book_ = $context["book"]; } else { $_book_ = null; }
            echo twig_escape_filter($this->env, $this->getAttribute($_book_, "date"), "html", null, true);
            echo "
    </div>
    ";
        }
        $_parent = $context['_parent'];
        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['book'], $context['_parent'], $context['loop']);
        $context = array_merge($_parent, array_intersect_key($context, $_parent));
        // line 16
        echo "</div>
";
    }

    public function getTemplateName()
    {
        return "list.html";
    }

    public function isTraitable()
    {
        return false;
    }

    public function getDebugInfo()
    {
        return array (  67 => 16,  51 => 13,  48 => 12,  43 => 11,  38 => 8,  35 => 7,  29 => 5,);
    }
}

<?php

/* base.html */
class __TwigTemplate_8944b57466f08564caa53a1988261ae0 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = false;

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        // line 1
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ru\">
<head>
    <title>";
        // line 4
        $this->displayBlock('title', $context, $blocks);
        echo "</title>
    <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>
</head>
<body>

<div id=\"content\">
    ";
        // line 10
        $this->displayBlock('content', $context, $blocks);
        // line 12
        echo "</div>

</body>
</html>";
    }

    // line 4
    public function block_title($context, array $blocks = array())
    {
    }

    // line 10
    public function block_content($context, array $blocks = array())
    {
        // line 11
        echo "    ";
    }

    public function getTemplateName()
    {
        return "base.html";
    }

    public function getDebugInfo()
    {
        return array (  52 => 11,  49 => 10,  44 => 4,  37 => 12,  26 => 4,  21 => 1,  67 => 14,  51 => 11,  48 => 10,  43 => 9,  38 => 6,  35 => 10,  29 => 3,);
    }
}

<?php

/* books.html */
class __TwigTemplate_b8cee45188afdb4e6ad9c60dbacb54c3 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = $this->env->loadTemplate("base.html");

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doGetParent(array $context)
    {
        return "base.html";
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }

    // line 3
    public function block_title($context, array $blocks = array())
    {
        echo "Серия романов о Гарри Поттере";
    }

    // line 5
    public function block_content($context, array $blocks = array())
    {
        // line 6
        echo "<h1>Серия романов о Гарри Поттере</h1>

<div id=\"books\">
    ";
        // line 9
        if (isset($context["books"])) { $_books_ = $context["books"]; } else { $_books_ = null; }
        $context['_parent'] = (array) $context;
        $context['_seq'] = twig_ensure_traversable($_books_);
        foreach ($context['_seq'] as $context["_key"] => $context["book"]) {
            // line 10
            echo "    <div class=\"book\">
    \t<strong>";
            // line 11
            if (isset($context["book"])) { $_book_ = $context["book"]; } else { $_book_ = null; }
            echo twig_escape_filter($this->env, $this->getAttribute($_book_, "number"), "html", null, true);
            echo "</strong>. \"<em>";
            if (isset($context["book"])) { $_book_ = $context["book"]; } else { $_book_ = null; }
            echo twig_escape_filter($this->env, $this->getAttribute($_book_, "title"), "html", null, true);
            echo "\"</em> - ";
            if (isset($context["book"])) { $_book_ = $context["book"]; } else { $_book_ = null; }
            echo twig_escape_filter($this->env, $this->getAttribute($_book_, "date"), "html", null, true);
            echo "
    </div>
    ";
        }
        $_parent = $context['_parent'];
        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['book'], $context['_parent'], $context['loop']);
        $context = array_merge($_parent, array_intersect_key($context, $_parent));
        // line 14
        echo "</div>
";
    }

    public function getTemplateName()
    {
        return "books.html";
    }

    public function isTraitable()
    {
        return false;
    }

    public function getDebugInfo()
    {
        return array (  67 => 14,  51 => 11,  48 => 10,  43 => 9,  38 => 6,  35 => 5,  29 => 3,);
    }
}

 

 

Я думаю о производительности даже заикаться не надо
Отличие 2.3 от 3.0 - это фактически twig
Других существенных отличий, кроме мультиязычных ЧПУ которые работают кстати через ж..  нету
Зато добавлено куча костылей прямо влияющие на тормоза, резко увеличилось количество запросов и т п

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

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.