easyComm - комментарии, отзывы, вопросы на сайте
Установить easyComm >>
Компонент предназначен для создания на сайтах таких модулей/разделов, как:
Компонент позволяет пользователям сайта через специальную форму оставить свое сообщение/отзыв/вопрос. Администратор получит уведомление на почту, увидит их в панели управления сайтом, сможет опубликовать или удалить сообщение, оставить свой ответ на него.
Компонент предназначен для работы с неавторизованными пользователями и не носит социальной направленности. Т.е. он не проектировался как модуль для добавления комментариев в блогах или каких то соц сетях. Скорее как сервис для связи с пользователями для интернет магазинов или компаний, продающих услуги.
За последнее время было создано несколько сайтов, продающих товары и услуги, на которых была необходимость в модуле, позволяющем организовать обратную связь с пользователями в виде возможности отставить комментарий (отзыв) или задать вопрос непосредственно на сайте.
В настоящее время существуют несколько решений для MODx, решающих вопрос комментирования (Tickets, старый Quip, ModxTalks), однако они заточены под сайты социальной направленности, блоги, обладают явно избыточным функционалом и несколько сложной настройкой в том случае, если вас не устраивает их внешний вид или работа по-умолчанию.
Поэтому долгое время я использовал свое решение на базе MIGx, я даже писал про него modx.pro/help/3967/#comment-29953
Сделав десяток сайтов, пришел к пониманию того, что нужно:
— сообщения должны оставлять неавторизованные пользователи
— сообщения публикуются после модерации администратором
— минимально необходимый набор полей: имя, электронная почта, контакты (отдельно), текст сообщения, тема сообщения
— возможность администратора ответить на это сообщение, указав при этом кто отвечает (например свое ФИО)
— уведомление администратора о новом сообщении с сайта
— уведомление пользователя о публикации или получении ответа на его сообщение по почте
— достаточно простой в использовании компонент
— возможность внедрить на одну страницу несколько блоков с сообщениями (например Отзывы и Вопросы на разных вкладках, но в рамках одной страницы)
Используя эти требования в качестве своеобразного ТЗ я и написал этот компонент.
При просмотре поставьте высокое качество.
Для понимания общей сути нужна написать, что компонент оперирует 2мя объектами: Сообщение (ecMessage) и Цепочка (ecThread). Каждое сообщение относится к определенной цепочке, а цепочка в свою очерез к определенному ресурсу. Это позволяет создать несколько цепочек для одного ресурса.
Поля объекта ecThread:

Когда пользователь заполняет ее, сообщение заносится в базу данных со статусом «не опубликовано». Менеджеру сайта приходит по почте уведомление. Если пользователь оставил свою электронную почту, ему так же придет уведомление о том, что его сообщение получено.
Менеджер в специальном разделе может управлять сообщениями, например опубликовать его, удалить, или оставить свой ответ. При редактировании сообщения менеджер имеет возможность установить галочку «уведомить об ответе», в этом случае пользователь получит уведомление о том, что менеджер опубликовал сообщение на сайте или дал ответ на него. Возможны различные варианты действий, например: опубликовал без ответа; опубликовал и оставил ответ; не публиковал на сайте, но ответил.
При помощи сниппета

Раздел имеет 2 вкладки: Сообщения и Цепочки.
Сообщения
В этом разделе собраны все сообщения на сайте, последние добавленные будут сверху.

Каждое сообщение относится к какой-либо цепочке, а цепочка в свою очередь к какому-либо ресурсу MODx, это позволяет добиться большей гибкости, позволяет создать несколько цепочек для одного ресурса.
Для создания нового сообщения необходимо нажать на кнопку «Создать», для редактирования существующего — кликнуть правой кнопкой мыши по сообщению и выбрать в контекстном меню пункт «Изменить». Откроется окно со всеми доступными для заполнения полями. Перед этим необходимо, что бы у вас была создана цепочка, в которой данное сообщение будет находится.
У окна редактирования сообщения 3 вкладки:
— Сообщение. Основная информация о сообщении.
— Ответ. Поля для ответа на сообщение. Заполняется менеджером сайта.
— Настройки. Служебные настройки.

Сообщения могут быть опубликованы на сайте, удалены (в этом случае их возможно восстановить) или полностью уничтожены. В таблице такие сообщения отображаются или серым цветом или перечеркнутые красной линией.

Цепочки
В этом разделе собраны все цепочки сообщений.

Каждая цепочка привязана к определенному ресурсу и имеет свое уникальное имя, по умолчанию «resource-[[*id]]». Для одного ресурса может существовать несколько цепочек, например «reviews-[[*id]]» (Отзывы) и «questions-[[*id]]» (Вопросы).
Кроме того, для цепочки можно задать Заголовок, например «Отзывы о компании» для удобства работы.
В контекстом меню цепочек доступен пункт «Управление сообщениями этой цепочки», которые открывает отдельную вкладку с сообщениями только этой цепочки.

Цепочки создаются автоматически при отображении формы с добавлением сообщения на сайте.
Управление сообщениями через вкладку «Сообщения» при редактировании ресурсов.
Если в настройках включено отображение вкладки Сообщения, то при редактировании ресурса появится эта вкладка. Ее функционал идентичен тому, что есть в меню «Приложения» с той разницей, что доступны только те сообщения и цепочки, которые относятся к текущему ресурсу.

Документация: docs.modx.pro/komponentyi/easycomm
Установочный пакет: modstore.pro/packages/utilities/easycomm
easyComm для своей работы использует pdoTools, не забудьте его установить.
В общем если что-то сбивчиво или непонятно написал — укажите мне на это, поправлю. Задавайте вопросы, постараюсь ответить!
Здесь только важные обновления, в которых появился новый функционал или существенно изменилось поведение компонента.
09.04.2015, версия 1.0.4-beta2, Оценки и Рейтинг
Заметка: modx.pro/components/5299
13.04.2015, версия 1.1.0-beta, Плагины для добавления полей
Заметка: modx.pro/components/5299
Документация: docs.modx.pro/komponentyi/easycomm/plaginyi-i-kastomizacziya
05.06.2015, версия 1.2.0-pl, Дополнительное поле Изображение
Заметка: modx.pro/components/5707
31.05.2017, версия 1.3.2-pl, поддержка Google ReCaptcha v2
Пожалуйста, не путайте с компонентом ReCaptchaV2, который лежит в репозитории MODX. easyComm поддерживает рекапчу от гугл не зависимо от того компонента и его установка не требуется!
Для того, что бы включить капчу, нужно:
1. Зарегистрировать сайт, получить site key и secret key, вписать их в настройки MODX (раздел easyComm, настройки ec_recaptcha2_site_key, ec_recaptcha2_secret_key).
2. Включить капчу, настройка ec_captcha_enable
Если вам не нужна капча — просто не включайте ее, все будет работать, как раньше (простая проверка на спам осуществляется через скрытое поле).
Да, при обновлении — нужно перезаписать чанк tpl.ecForm, т.к. он изменился (или добавить в него плейсхолдер [[+recaptcha]] перед блоком с кнопкой).
Если у вас уже используется на сайте компонент ReCaptchaV2 (в других формах, реализованных через Formit), то вам придется самостоятельно подумать, как подключать скрипт от google recaptcha только 1 раз и как совместить работу компонентов. Это уже все индивидуально.
24.05.2018, версия 1.5.0-pl, переезд на Fenom.
В этой версии синтаксис чанков был изменен на Fenom, как более понятный.
Кроме того, добавилась вкладка с историей изменения Сообщения (создано, обновлено, удалено).
И да, внедрен механизм защиты от «левых установок», не через ModStore. Последняя версия без этого механизма — 1.4.3. Если вас устраивает отсутствие обновлений и не нужна поддержка — пользуйтесь)
19.12.2018, версия 1.6.0-pl, Множественные поля рейтинга
Заметка: modx.pro/components/17177
Документация: docs.modx.pro/komponentyi/easycomm/neskolko-polej-s-rejtingom
26.12.2018, версия 1.7.0-pl, Расширенный вывод рейтинга
Заметка: modx.pro/components/17212
16.01.2019, версия 1.8.0-pl, Шаблоны ответов
Заметка: modx.pro/components/17334
04.02.2019, версия 1.8.6-pl, Новые возможности
— прямая ссылка на сообщение в письме менеджеру (через GET параметр ecmessage)
— Wysiwyg редактор в поле Ответ в панели управления (отключаемый)
— Возможность настраивать фильтры в списке сообщений в панели управления (настройка ec_message_grid_filters)
15.11.2019, версия 1.10.0-pl, Голосование за сообщения
Заметка: modx.pro/components/19235
22.04.2021, версия 1.11.0-pl, Возможность прикреплять файлы к сообщениям
04.01.2023, версия 1.14.0-pl, Темы оформления звездочек
Заметка: modx.pro/components/24465
Компонент предназначен для создания на сайтах таких модулей/разделов, как:
- Отзывы,
- Комментарии,
- Вопрос-ответ.
Компонент позволяет пользователям сайта через специальную форму оставить свое сообщение/отзыв/вопрос. Администратор получит уведомление на почту, увидит их в панели управления сайтом, сможет опубликовать или удалить сообщение, оставить свой ответ на него.
Компонент предназначен для работы с неавторизованными пользователями и не носит социальной направленности. Т.е. он не проектировался как модуль для добавления комментариев в блогах или каких то соц сетях. Скорее как сервис для связи с пользователями для интернет магазинов или компаний, продающих услуги.
Введение
За последнее время было создано несколько сайтов, продающих товары и услуги, на которых была необходимость в модуле, позволяющем организовать обратную связь с пользователями в виде возможности отставить комментарий (отзыв) или задать вопрос непосредственно на сайте.
В настоящее время существуют несколько решений для MODx, решающих вопрос комментирования (Tickets, старый Quip, ModxTalks), однако они заточены под сайты социальной направленности, блоги, обладают явно избыточным функционалом и несколько сложной настройкой в том случае, если вас не устраивает их внешний вид или работа по-умолчанию.
Поэтому долгое время я использовал свое решение на базе MIGx, я даже писал про него modx.pro/help/3967/#comment-29953
Сделав десяток сайтов, пришел к пониманию того, что нужно:
— сообщения должны оставлять неавторизованные пользователи
— сообщения публикуются после модерации администратором
— минимально необходимый набор полей: имя, электронная почта, контакты (отдельно), текст сообщения, тема сообщения
— возможность администратора ответить на это сообщение, указав при этом кто отвечает (например свое ФИО)
— уведомление администратора о новом сообщении с сайта
— уведомление пользователя о публикации или получении ответа на его сообщение по почте
— достаточно простой в использовании компонент
— возможность внедрить на одну страницу несколько блоков с сообщениями (например Отзывы и Вопросы на разных вкладках, но в рамках одной страницы)
Используя эти требования в качестве своеобразного ТЗ я и написал этот компонент.
Видео работы, 3.5 минуты
При просмотре поставьте высокое качество.
Описание
Для понимания общей сути нужна написать, что компонент оперирует 2мя объектами: Сообщение (ecMessage) и Цепочка (ecThread). Каждое сообщение относится к определенной цепочке, а цепочка в свою очерез к определенному ресурсу. Это позволяет создать несколько цепочек для одного ресурса.
Поля объекта ecThread:
- resource — id ресурса, к которому относится цепочка
- name — уникальное имя цепочки
- title — заголовок цепочки (для удобства)
- message_last — id последнего опубликованного и неудаленного сообщения
- message_last_date — дата последнего опубликованного и неудаленного сообщения
- count — количество опубликованных и неудаленных сообщений в цепочке
- properties — параметры, с которыми вызывался сниппет ecForm, создавший эту цепочку
- extended — не используется в текущей версии
- thread — id цепочки
- subject — тема сообщения, например вы можете создать выпадающий список со значениями «служба поддержки», «отдел продаж»
- date — дата и время сообщения
- user_name — имя пользователя, который оставил сообщение
- user_email — электронная почта
- user_contacts — контактная информация
- text — текст сообщения
- reply_author — автор ответа
- reply_text — текст ответа
- notify — уведомить об ответе пользователя
- notify_date — дата последнего уведомления пользователя (что бы не уведомлять 2 раза)
- extended — не используется в текущей версии
Фронтенд
При помощи сниппета[[!ecForm]] отображается форма добавления нового сообщения.
Когда пользователь заполняет ее, сообщение заносится в базу данных со статусом «не опубликовано». Менеджеру сайта приходит по почте уведомление. Если пользователь оставил свою электронную почту, ему так же придет уведомление о том, что его сообщение получено.
Менеджер в специальном разделе может управлять сообщениями, например опубликовать его, удалить, или оставить свой ответ. При редактировании сообщения менеджер имеет возможность установить галочку «уведомить об ответе», в этом случае пользователь получит уведомление о том, что менеджер опубликовал сообщение на сайте или дал ответ на него. Возможны различные варианты действий, например: опубликовал без ответа; опубликовал и оставил ответ; не публиковал на сайте, но ответил.
При помощи сниппета
[[!ecMessages]] выводятся сообщения на странице.
Административный интерфейс
После установки компонента в меню Приложения появится новый пункт меню «Сообщения».Раздел имеет 2 вкладки: Сообщения и Цепочки.
Сообщения
В этом разделе собраны все сообщения на сайте, последние добавленные будут сверху.

Каждое сообщение относится к какой-либо цепочке, а цепочка в свою очередь к какому-либо ресурсу MODx, это позволяет добиться большей гибкости, позволяет создать несколько цепочек для одного ресурса.
Для создания нового сообщения необходимо нажать на кнопку «Создать», для редактирования существующего — кликнуть правой кнопкой мыши по сообщению и выбрать в контекстном меню пункт «Изменить». Откроется окно со всеми доступными для заполнения полями. Перед этим необходимо, что бы у вас была создана цепочка, в которой данное сообщение будет находится.
У окна редактирования сообщения 3 вкладки:
— Сообщение. Основная информация о сообщении.
— Ответ. Поля для ответа на сообщение. Заполняется менеджером сайта.
— Настройки. Служебные настройки.

Сообщения могут быть опубликованы на сайте, удалены (в этом случае их возможно восстановить) или полностью уничтожены. В таблице такие сообщения отображаются или серым цветом или перечеркнутые красной линией.

Цепочки
В этом разделе собраны все цепочки сообщений.

Каждая цепочка привязана к определенному ресурсу и имеет свое уникальное имя, по умолчанию «resource-[[*id]]». Для одного ресурса может существовать несколько цепочек, например «reviews-[[*id]]» (Отзывы) и «questions-[[*id]]» (Вопросы).
Кроме того, для цепочки можно задать Заголовок, например «Отзывы о компании» для удобства работы.
В контекстом меню цепочек доступен пункт «Управление сообщениями этой цепочки», которые открывает отдельную вкладку с сообщениями только этой цепочки.

Цепочки создаются автоматически при отображении формы с добавлением сообщения на сайте.
Управление сообщениями через вкладку «Сообщения» при редактировании ресурсов.
Если в настройках включено отображение вкладки Сообщения, то при редактировании ресурса появится эта вкладка. Ее функционал идентичен тому, что есть в меню «Приложения» с той разницей, что доступны только те сообщения и цепочки, которые относятся к текущему ресурсу.

Ссылки
Документация: docs.modx.pro/komponentyi/easycomm
Установочный пакет: modstore.pro/packages/utilities/easycomm
Примечание
easyComm для своей работы использует pdoTools, не забудьте его установить.
В общем если что-то сбивчиво или непонятно написал — укажите мне на это, поправлю. Задавайте вопросы, постараюсь ответить!
Обновления
Здесь только важные обновления, в которых появился новый функционал или существенно изменилось поведение компонента.
09.04.2015, версия 1.0.4-beta2, Оценки и Рейтинг
Заметка: modx.pro/components/5299
13.04.2015, версия 1.1.0-beta, Плагины для добавления полей
Заметка: modx.pro/components/5299
Документация: docs.modx.pro/komponentyi/easycomm/plaginyi-i-kastomizacziya
05.06.2015, версия 1.2.0-pl, Дополнительное поле Изображение
Заметка: modx.pro/components/5707
31.05.2017, версия 1.3.2-pl, поддержка Google ReCaptcha v2
Пожалуйста, не путайте с компонентом ReCaptchaV2, который лежит в репозитории MODX. easyComm поддерживает рекапчу от гугл не зависимо от того компонента и его установка не требуется!
Для того, что бы включить капчу, нужно:
1. Зарегистрировать сайт, получить site key и secret key, вписать их в настройки MODX (раздел easyComm, настройки ec_recaptcha2_site_key, ec_recaptcha2_secret_key).
2. Включить капчу, настройка ec_captcha_enable
Если вам не нужна капча — просто не включайте ее, все будет работать, как раньше (простая проверка на спам осуществляется через скрытое поле).
Да, при обновлении — нужно перезаписать чанк tpl.ecForm, т.к. он изменился (или добавить в него плейсхолдер [[+recaptcha]] перед блоком с кнопкой).
Если у вас уже используется на сайте компонент ReCaptchaV2 (в других формах, реализованных через Formit), то вам придется самостоятельно подумать, как подключать скрипт от google recaptcha только 1 раз и как совместить работу компонентов. Это уже все индивидуально.
24.05.2018, версия 1.5.0-pl, переезд на Fenom.
В этой версии синтаксис чанков был изменен на Fenom, как более понятный.
Кроме того, добавилась вкладка с историей изменения Сообщения (создано, обновлено, удалено).
И да, внедрен механизм защиты от «левых установок», не через ModStore. Последняя версия без этого механизма — 1.4.3. Если вас устраивает отсутствие обновлений и не нужна поддержка — пользуйтесь)
19.12.2018, версия 1.6.0-pl, Множественные поля рейтинга
Заметка: modx.pro/components/17177
Документация: docs.modx.pro/komponentyi/easycomm/neskolko-polej-s-rejtingom
26.12.2018, версия 1.7.0-pl, Расширенный вывод рейтинга
Заметка: modx.pro/components/17212
16.01.2019, версия 1.8.0-pl, Шаблоны ответов
Заметка: modx.pro/components/17334
04.02.2019, версия 1.8.6-pl, Новые возможности
— прямая ссылка на сообщение в письме менеджеру (через GET параметр ecmessage)
— Wysiwyg редактор в поле Ответ в панели управления (отключаемый)
— Возможность настраивать фильтры в списке сообщений в панели управления (настройка ec_message_grid_filters)
15.11.2019, версия 1.10.0-pl, Голосование за сообщения
Заметка: modx.pro/components/19235
22.04.2021, версия 1.11.0-pl, Возможность прикреплять файлы к сообщениям
04.01.2023, версия 1.14.0-pl, Темы оформления звездочек
Заметка: modx.pro/components/24465
Комментарии: 536
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Менеджер получает письмо «На сайте новый вопрос», заходит в админку, видит там «Эй, вы меня обманули!» и может ответить, не публикуя вопрос на сайте — прямо через админку. А тому, кто вопрос задал будет отправлено письмо.
Ведь покупать же никто не заставляет. :)
Про оплачивающего заказчика — согласен. :)
Посмотрите статистику modstore.pro :) mSearch2, Office, ms2Gallery — говорят о том, что качественные дополнения будут покупать. Потому что, цитирую :)
Лучше на ты. Так я чувствую себя моложе. :)
Но показываются именно загрузки, а не покупки. То есть, чем больше новых версий дополнения — тем больше закачек.
АндрейP.S. но ваш компонент лишним, безусловно, не будет.
АндрейУ меня на сайте Tickets используется для оценки товаров и оставления отзыва о том или ином товаре. Соответственно, голосовалка за отзывы мне не нужна (как здесь со стрелочками), а вот само поле `rating` в базе очень даже подходит для оценки товара, причём по любой шкале)
Поэтому я убрал возможность голосовать за отзывы, а на событие OnCommentSave повесил плагин, сохраняющий оценку пользователя в поле `rating`. Соответственно, в форму отзыва добавил радиокнопки для возможности выставить оценку. С помощью JS высвечивается та оценка, которую выбирает в данный момент пользователь.
Звёздочки картинками выводятся сниппетом (выбирает этот самый `rating` из базы) и чанком на основании выставленной оценки (c плейсхолдером [[+rating]]). В чанке примерно следующее:
Там ещё прикручена общая оценка для товара на основании всех оценок юзеров.
В общем, может это и не совсем прямое использование компонента, и в некоторых местах костыльно получилось, но всё же работает быстро и свои функции выполняет, и меня в целом устраивает)
АндрейВыше я озвучил общую концепцию функционала.
А если имеются ввиду просто дополнительные поля, например, как в minishop2 — то нет. Но возможно, что пока нет.
Каких полей вам не хватает?
Исходник.
Спасибо! Ну, почему бы и нет конечно )
Ну например мне нужно к Записи прикрутить доп поле с датой я добавляю в чанк с формой дополнительный инпут и передаю в TV своего тикета, дальше уже вывожу список с дополнительными полями.
Более конкретный пример тут. Есть два дополнительных TV: date (не заполнено) и resouecelist
Василий, если не сложно не могли бы вы меня направить в правильное русло. При создании тикета хочу отправлять уведомление менеджеру сайта. Я так понимаю проще через плагин?
Тестовый сайт
artlenk.ru/otzyivyi-klientov/
Для тех кто не понял, нужно в файле ec.default.js (assets/components/easycomm/js/web/) заменить все знаки:
на
А для подстановки «слово» из $_GET использовать простой сниппет
не проверял, но как то так…
Правда купить пока не получилось — при оплате по ВебМани ругается. Но решу сегодня.
Вопрос у меня следующий:
— Хочу к «вопросам» прикрепить возможность загрузки скриншота (фотки). Планирую использовать Uploadify. Такое возможно? или может что-то посоветуете?
Я не пробовал прикреплять файлы, наверное пока что никаких в этом направлении идей у меня нет… я даже не знаю что посоветовать, наверное вам придется самому подумать. Если будут нужны какие-то изменения в компоненте для реализации — я готов их внести, но пока не знаю что =)
Дата\время создания выводятся через [[+date]], а стандартные фильтры не срабатывают
дата вообще не выводиться.
Вот так дата выводится, но фильтры не применяются
Честно говоря, пока у меня не получилось это реализовать. Поиск не дал мне нужных знаний, что бы понять, как это правильно сделать в MODx. Те способы, которые я испробовал не работают до конца. Но задача стоит, так что надежды не теряем!)
Антон ЛевицКак осуществить этот пункт?
«5. Добавить записи в словари системы ec_message_field1 и ec_message_field2 (пространство имен easycomm).»
Спасибо.
И еще, есть ли возможность для отправки вопросов/отзывов зарегистрированными юзерами?
Отправлять вопросы зарегистрированные пользователи могут, да. В этом случае автоматически подставляется их имя и заполняется колонка createdby (посмотрите структуру таблиц компонента в phpmyadmin).
Ну и выбор отвечающего из списка с ссылкой на профиль и изображением.
Спасибо.
не очень понял, про что вы.
Чтобы в админке можно было выбрать отвечающего из пользователей сайта ( у каждого свой профиль, например с помощью userProfile).
И поддерживается ли древовидная структура вопросов-ответов?
Древовидной структуры так же нет.
Там такое вот поведение странное, завис
mail.yandex.ru/message_part/Screenshot+%2827%29.png?_uid=89491354&hid=1.1.2&ids=2560000001153381924&name=Screenshot+%2827%29.png
Я разобрался с этим. Оказалось что если в поле ответа есть тег ссылки с незакрытым кавычкой адресом, то не грузится. Вот такое странное поведение.
В данном случае ссылка на файл из письма, данный файл доступен только при авторизации в вашем почтовом ящике. Совершенно естественно, что больше никто получить к нему доступ не может.
На данные момент так
Вопрос закрыт сразу не заметил про jquery.form.js.
[[ecMessages? &thread=`1`]] — Вот так вывожу
Кэши сайта также обновляю
А как теперь вывести несколько цепочек?
и немного ниже, удалите.
После чего еще ниже найдите
и поменяйте на
по идее все
Параметр pageVarKey и ниже него totalVar.
Вызывать так:
Нужно ли что-то дописывать в php? Выбивает error submit…
Компонент использует свой файл стилей, который подключается при вызове сниппета ecForm.
Я рекомендую еще убрать из системных настроек путь к этому файлу, что бы избежать двойного подключения на странице.
Если я верно понял, то можно написать плагин, который будет реагировать на добавление/редактирование/удаление комментария и в этот момент копировать рейтинг цепочки хоть куда, в том числе и в TV.
1. Добавить hidden поле notify=«1» в форму, не забыв добавить и его и в параметр allowedFields сниппета ecForm.
2. Написать плагин на событие OnEcMessageSave с проверкой, что это новое сообщение и там установить значение поля notify.
3. Поменять в исходниках значение поля по-умолчанию =)
core\components\easycomm\model\easycomm\mysql\ecmessage.map.inc.php
Не отображать вопрос на сайте
/>
в core\components\easycomm\model\easycomm\easycomm.class.php
Добавил if (!$data['noshow']) $fields['published'] = 1;
т.е. если человек не хочет что бы его вопрос отображался на сайте, ставит галку «Не отображать вопрос на сайте»
Подскажите, как проще реализовать, что бы все сообщения были неопубликованные (это я могу сам сделать), но после ответа на сообщение, оно публиковалось само или не публиковалось в зависимости от того поставил посетитель галку или нет, что бы врачу отвечающему на вопросы, не нужно было контролировать какой вопрос публиковать, а какой нет.
Но если я верно понял, то добавьте в вызов ecMessages условие:
как-то так получается…
в зависимости от того стоит там галка или нет в core\components\easycomm\model\easycomm\easycomm.class.php
$fields['published'] присваивается либо 0 либо 1
Так?
от куда сниппет узнает про noshow? он же только в html
ps: Мне нужно сделать мадерирование вопросов пользователей, перед публикацией, а публиковать автоматом при ответе только те, на которых сняли галку «Не отображать вопрос на сайте»
Если у вас уже проставляется published так, как нужно, то просто добавьте условие, что бы показывались все опубликованные отзывы, у которых есть ответ:
По идее должно работать
при выводе сообщений
искал в исходниках что бы затереть, что то не могу найти
Вероятно вы что-то с ним связанное поменяли.
Вот код из файла easycomm.class.php, который проверяет на спам:
Оно появляется на странице где только снипет ecMessages формы нету. какой там антиспам может быть?
Изначальная идея в том, что по-умолчанию новое сообщение не опубликовано и следовательно не доступно с фронтенда. При публикации его на сайте администратор сразу и отвечает на него.
Конечно, вы можете написать некий код, что бы и с фронтэнда отвечать, но какого то общего решения нет. В вашем коде вам нужно просто заполнять поле reply_text у сообщения, это и есть ответ на него.
Только установил и столкнулся с проблемой. Русский язык не понимает screenshot.su/show.php?img=423faa833ff89bd360c3df58450832a7.jpg
В админке та-же проблема.
Помогите решить
У вас с вероятностью 99% где-то стоит иная кодировка.
1. Админку проверил, стоит utf8
2. Базу скачал, там везде CHARSET=utf8
Единственное, что сделал, это сравнение utf8_general_ci
Сбросил кэш, перезашел в админку, не помогло. Что еще посмотреть.
Дополнение tickets работает нормально.
И как цепочки скрыть?
в исходном коде страницы что стоит?
в базе данных уже хранятся знаки вопроса вместо букв?
В браузере меняли кодировку?
в исходном коде страницы что стоит? — это вы про что? m2.demo.cresca.ru/otzyivyi.html
в базе данных уже хранятся знаки вопроса вместо букв? — да
В браузере меняли кодировку? — я даже знать не знаю как это сделать, как и любой другой пользователь, который будет комментарий оставлять
И как вот этот бред остановить в логах? Я уже давно удалил компонент этот
[2016-03-08 15:04:14] (ERROR @ /index.php) Could not load class: TicketsSection from mysql.ticketssection.
Из-за этого логи уже 120 мб весят
Пришлось заменить в скаченном файле кодировку.
Вопрос по поводу как закрыть или спрятать «цепочки» еще открыт.
И подскажите пожалуйста как полностью удалить компонент tickets, всем заранее спасибо.
Убрать полностью это вкладку для роли manager
Могу предложить закомментировать в файле
assets/components/easycomm/js/mgr/widgets/home.panel.js
строки с 28 по 38, вот так:
только в скобочках не запутайтесь, по идее это просто уберет вкладку, на иной функционал повлиять не должно.
В будущей версии мож придумаю чего, хотя вы первый попросили. Ну или надо плагин написать, который будет скрывать эту вкладку, но как это сделать я не знаю :)
файл assets/components/easycomm/js/mgr/widgets/page.panel.js
Там с 30 по 40 строки аналогичные действия.
У меня юзер видит только тот ресурс, который я ему разрешил (в настройках пользователя указал id ресурса для ключа tree_root_id), и хотелось бы, что бы юзер мог видеть сообщения только для видимого ему ресурса, без правки исходников.
ps. если tree_root_id указать 0 — видны все ресурсы, если перечислять (можно перечислять через запятую), то видны только перечисленные ресурсы. Отсюда можно ввести проверку по этому ключу и на основе проверки показывать только сообщения и цепочки для разрешенного ресурса.
Спасибо, надеюсь моё сообщение поможет в реализации данной функции.
а при редактировании сообщения можно в настройках поменять привязку к цепочке. Такая возможность удручает.
docs.modx.pro/components/easycomm/snippets
Как сделать, что бы эта вкладка не создавалась на других страницах? Надо что бы она была только на 1 й. Где действительно отзывы. А то при создании новых ресурсов она появляется автоматически.
А когда было оставлено первое сообщение данный блок пропадал?) Я понял, что штатно этой функции нет, но может подскажите куда пилить) Заранее огромное спасибо)
По сабжу: а вызов типа
не решит этот вопрос?
Может быть на сервере какие-то настройки мешают…
За день до этого перестали подходить пороли от всех админов сайта, сбросил их запросом к базе
Сами вопросы в админке есть, в базе всмысле
и названия в апострофах заключено почему то
Но нужны русские, зачем
[[!ecForm?
&requiredFields=`user_name,text,user_email`
&thread=`[[*pagetitle]]`
]]
создает цепочку и добавляет апострофы к заголовку (для русских заголовков)?
А зачем thread делаете равным pagetitle?
Это же чревато… чем родной resource-[[*id]] не устроил? Думаю, что нужно это исправить и проблем не будет.
Например, на сайте есть две ветки (вопросы, отзывы), и в форме, например выпадающим списком (или радио, не важно) посетитель выбирает, куда написать.
docs.modx.pro/components/minishop2/development/plug-ins-products
В админке поля создаются, но через форму в базе данных они не сохраняются! Как быть?
В бд я эти поля создал.
docs.modx.pro/components/easycomm/plugins-and-customization
А можно в данном компоненте настроить подтверждение активации отзыва через почту. Т.е. на почту администратору приходит письмо с самим отзывом и ссылкой, перейдя по которой, администратор активирует этот отзыв (как подтверждение регистрации на большинстве сайтов)?
Из коробки нет такой функции, нужно что-то придумывать и писать, например сделать отдельную страницу и разместить там небольшой сниппет, который будет обрабатывать запросы типа: /puplish-comment/?id=XXX&publish=1&secret=XXXXXXX
где secret это что нибудь типа md5 от id + секретный код, записанный в настройках.
А ссылку такую уже формировать в шаблоне письма…
Перед глазами код с предыдущего сайта на Evo. Там это реализовано. В принципе, примерно так, как вы описали, по крайней мере в реализации ссылки.
Использую компонент для отзывов о пользователях.
Подскажите как вывести общий рейтинг в списке пользователей? Используется pdoUser.
thread == user-(id пользователя)
Форма с добавлением отзыва находится на одном и том же ресурсе для разных пользователей, пример www.site.ru/user?id=111
Пробовал сделать плагин, при добавлении, удалении и тд. Он должен был брать из обновленной ветки рейтинг и добавлять его в кастомную таблицу пользователя, но он срабатывал только при добавлении отзыва с сайта, а при публикации, удалении не срабатывал. Использовал эти события joxi.ru/Q2KlNas95nXoAj
При вызове pdoUsers делайте join таблицы отзывов, по аналогии с этой публикацией: modx.pro/solutions/7446-join-easycomm-and-mfilter2/, только у вас условие будет не
а что-то вроде (не проверял)
Есть маленькое предложение: было бы неплохо в настройки сниппета ecForm внести параметр типа adminEmail — чтобы можно было уведомлять определенных менеджеров. Часто, например, за функционал «вопрос-ответ» и «отзывы» (оба реализованы с помощью EasyComm) отвечают два разных контент-менеджера и хотелось бы распределять уведомления о новых сообщениях пользователей по конкретным ответственным менеджерам. Плюсом было бы неплохо, если в параметр можно было бы передавать несколько адресов e-mail разделенных запятой.
А так — все отлично! Спасибо за плагин =)
Для тех, кому срочно надо (типа меня)… По идее, достаточно поменять код в файле easycomm.class.php в функции sendNewMessageNotification:
на
и затем передавать в вызове ecForm параметр adminEmail
Параметр mailManager у сниппета ecForm в свежей версии (1.2.7-pl), доступно для обновления.
Если нет, то как отправить сообщение нескольким менеджерам одновременно?
[[!ecMessages? &limit=`1200`]]
но все равно выводятся не все сообщения, а всего 11 штук примерно, а должно быть гораздо больше, где и что можно подправить?
Укажите &threads=`*`, см. описание параметра в документации docs.modx.pro/components/easycomm/snippets
прописал так [[!ecMessages? &threads=`resource-242` &limit=`1200`]]
стало вообще одно выводиться
так &threads=`*` тоже одно выводится
все вот так теперь выводятся все сообщения из этого раздела
параметр limit всегда отличался корректностью работы. Я обычно 0 пишу, когда нужно вывести все. Хорошо, что заработало.
&limit=`0`
]]
категорически не работает… выводит всего несколько сообщений
а как вывести рейтинг записи на другой странице через запрос pdotools
Откуда я знаю, что вам нужно то.
к примеру у меня такая структура:
дом (родитель)
— о доме (дочерний элемент)
— новости (дочерний элемент)
— отзывы (дочерний элемент)
отзывы люди оставляют во вкладке отзывы, как эти отзывы вывести на родительской странице «дом»
спасибо за ответ
Подскажите пожалуйста так и на могу разобраться как вывести рейтинг среднее цифрой.
Спасибо.
Я не очень понимаю, где, как, каким сниппетом вы выводите, что значит цифрой?
prntscr.com/d5edsf
первый выводит опубликованные сообщения, второй выводит форму добавления.
Помню была какая-то старая версия Tickets у меня, я там как раз сделал так. Через достаточно большой период времени обновил компонент, в итоге с моим JS-скриптом отказался вообще работать, т.к. за длительный период родной JS у Tickets значительно изменил логику работы. Замучался потом из старого и нового скриптов делать гибрид, чтоб и новое все заработало и мои дополнения чтоб функционировали.
Не хочу чтоб через пару лет мне пришлось столкнуться с той же проблемой у easyComm. Поэтому хочу именно еще одним дополнительным JS-файлом это сделать, как плагин.
Так не работает. Вообще страница падает из-за php конфликта.
Я же обычно делаю так:
но при обновлениях приходится следить, что произошло и вносить изменения.
Попытался в tpl.ecForm.Success впихнуть вызов ecMessages с &limit=`1`, но там видимо где-то есть оператор экранирующий теги MODX, в итоге вместо вывода результата работы сниппета вижу просто строку его вызова. Как исправить, в каком php-файле какой кусок кода? Ну или можт еще какой путь есть?
Изначально был Tickets, но отказался из-за того, что в базовом варианте нет поддержки вывода нескольких веток комментариев на одной странице, а easyComm имеется. Править исходники Tickets, чтобы сделать поддержку нескольких вызовов сейчас банально нет времени.
Что касательно easyComm сделано:
1. Сделал поддержку включения/отключения комментов для статьи в один клик в доп.полях через радиобатон в админке.
2. Само-собой с CSS поработал
3. Убрал лишние стандартные поля, вход/регистрация производится через собственный компонент logReg (доведу однажды до ума — выложу релиз)
4. Реализована возможность мультикомментариев (комментарии на комментарий).
Сейчас после входа и отправки сообщений приходится обнавлять страницу, но в планах все через AJAX допилить. Также будут аватары, загружаемые пользователями (не через Gravatar, а напрямую на хостинг). Сейчас заканчиваю еще один собственный компонент modxAva. Точнее компонент уже готов, просто на этом сайте еще не прикрутил, но потестить его можно на другом сайте — http://esolife.ru/. Там он успешно работает в паре с Tickets (на основе которого кстати там построен полноценный форум, функционал которого постепенно расширяю).
К сожалению, сейчас нет времени смоделировать ситуацию, проверьте еще раз, что каких-нибудь досадных опечаток нет…
Ваш отличный компонент пришелся очень вовремя и к месту. Буду использовать его для раздела FAQ. У меня на вопросы пользователей будет отвечать около 20 специалистов. Будет довольно большой объем сообщений. Поэтому без аватаров, страница будет довольно обезличенная и «не живая». Отсюда вопрос.
Подскажите пожалуйста, как бы вы реализовали вывод аватара менеджера сайта, того который отвечает на вопрос пользователя?
Вижу в плагине «easyComm» следующий код:
Как бы так тоже прикрутить вывод аватара, который прописан у менеджера в профиле?
Жёсткой привязки автора ответа к пользователю нет, как видите тут просто fullname берем. Я бы рекомендовал в этом случае вам заменить на такой код:
и хранить уже id пользователя.
На на фронте в выборку добавлять fullname и аватар удобным вам способом
Алексей, можете чуть подробнее подсказать в каком модуле можно определить текущего пользователя админки и сохранить его в таблицу «modx_ec_messages»?.. А то, изменив код именно в плагине «easyComm» как вы описали, даже после очистки кэша и всяческих перелогиниваний и удалении core\cache ничего не меняется. Думаю что это делается где-то в другом месте…
Плагин работает когда работаем на странице ресурса, файл выше — работает в разделе Приложения/easyComm.
Хочу реализовать форму вопроса во всплывающем окне. Если использовать фэнсибок и настроить в js закрытие на клик по кнопке — то форма закроется даже при ошибке в заполнении. Случайно в коробке нет ответов на эту реализацию?
Само собой кнопка вызова формы имеет класс fansy, a на странице подключен стиль и скрипт fancyapps.com/
У меня не работает отправка писем на почту о новых отзывах и тд. Как и где мне настроить необходимые параметры, чтобы все работало верно?
У меня компонент используется для вывода более 100 000 сообщений. Все они находятся в одной цепочке. Конечно же используется пагинация, выводится все через pdoPage. В каждом сообщении выводится id-шник, это как бы «номер вопроса». Поток вопросов довольно большой, поэтому пользователям нужна возможность находить свой вопрос по его номеру. В идеале бы генерировать алиас для каждого сообщения и иметь возможность вывести сообщение как ресурс MODX, чтобы на него можно было ссылаться. Скажите, как бы вы это реализовали?
Спасибо.
Я бы взял VirtualPage, настроил в нем правило для страниц типа /message/XXX/, где XXX — id сообщения, и дальше уже вроде все понятно… конкретная реализация — на ваше усмотрение, но в целом это абсолютно реализуемо.
А есть ли возможность добавлять фото к отзыву?
Или можно её реализовать.
После создания доп. полей по твоей инструкции, по-умолчанию они не сохраняются в базе через форму на сайте (в админке редактирование/сохранение работает).
Сохраняется только при добавлении их в allowedFields при вызове сниппета формы. В доках этот момент не описан. Или я что-то не верно делаю?
Заработало все в итоге?
docs.modx.pro/components/easycomm/
А то ты его покупаешь, а потом нескольким веткам начинаешь собирать инфу о его работе.
При таком раскладе можно было tikets использовать, и заниматься тем же самым.
Ещё очень не понравилось то, что CSS дефолтный отключить нельзя, что загрузить его отдельно и подогнать под speedtest google
CSS отключается, есть соответствующая настройка, прям первая на странице.
А где это можно сделать?
Как вариант на будущее:
css-tricks.com/examples/StarRating/
А то уже начали писать ecThreadRatingCustom
Сделал так
продублировал ecThreadRatingCustom и заменил rating_wilson
Это не круто вообще но это бытсрее чем найти ответ в документации которой по рейтингу нет.
Я вижу перед собой 2 одинаковые строчки и чем они должны различаться — не ясно.
Если проверить отправку почты через QuickEmail, письма приходят? Может дело в настройке почты именно сайта, а не компонента?
это бы в доки добавить, а то долго искал) Спасибо за сниппет, шикарная вещь)
Единственное не совсем понял, через плейсхолдер [[+rating]] выводится рейтинг в цифре, где его чанк оформления или как вместо него вывести рейтинг в звездах?
не давно добавил ссылку в документацию.
2. Для вывода в звездах смотрите, как это сделано в стандартных чанках, там используется конструкция которая позволяет задать ширину блока со звездами
Нужна хитрость, добавить в select поле, которое вычислить через запрос, как (rating * 20), что как раз составит проценты, т.к. максимальный рейтинг 5 — это 100%, значит текущий это (X *100) / 5 = (X * 20).
Проверить на живом примере я сейчас, к сожалению, не могу. Если совсем не получается -можете доступ к сайту дать, я там настрою.
селект в filters такой:
&select=`{
«msProduct»: "*",
«ecThread»: «ecThread.rating_simple * 20 AS rating, ecThread.count AS reviews»
}`
в чанке tpl.msProducts.row так:
[[+rating_simple]] — ничего
[[+rating_percent]] — ничего
[[+rating_simple_percent]] — ничего
[[+rating]] — число рейтинга (3 звезды) умноженное на 20, т.е. 60.000000
Дальше по идее все должно заработать на стилях ec-stars
60.0000 — это корректное значение процентов для css, можно использовать его.
Может можно привязать не к id товара, а к alias?
Создавать не обязательно, он создается при первом вызове сниппета ecForm.
Вот чего не нашел — это возможности передать кастомный урл в снипет ecMessages, чтобы в админке можно было на ресурс перейти.
Например, у меня товары в таблице migx. У них также есть свои страницы и урл.
Я могу передать относительный урл к ресурсу в виде /category/tovar.html (site_url уже из системных параметров брать). Если не затруднит, не могли бы добавить такой функционал?
Простите за наглость))
нужен более детальный пример.
У каждого товара есть следующие поля:
article — уникальный номер товара
alias — ссылка относительно категории
category_id — id категории. Категория это обычный ресурс modx.
Я хочу сделать отзывы к товарам на странице каждого товара. На странице товара вызываю ecForm
с параметром thread = [[*article]]. Во фронтенде все работает отлично, а вот бекенде — нет.
В качестве ресурса в админке сейчас получается просто один из ресурсов modx с тем же id, что и у товара, что конечно не корректно. Т.е. из админки, при клике перейти к ресурсу с комментарием во фронтенде забрасывает вообще на другой документ и то же самое в бекенде.
Я в код не влезал, но предполагаю, что в снипете автоматом генерится ссылка на ресурс по id.
А хотелось бы, для таких ситуаций, как у меня, иметь возможность самому передавать эту ссылку. Причем передавать разные ссылки для перехода в бекенд и фронтенд.
Я предлагаю добавить в снипет ecForm, например такой параметр — &customFrontUrl- в него можно будет передать такую конструкцию:
, чтобы сформировать ссылку на товар с комментарием в виде:
Тогда из бекенда можно будет заходить на товар во фронтенде.
И еще параметр &customBackId- сюда можно забрасывать id категории, чтобы формировалась ссылку уже на ресурс в бекенде, к которому привязана таблица modx с товарами.
Нужно подумать, ваше решение не самый гуд, вам будет удобно, многим другим пользователям — будет мешать или у них будет свой вариант реализации.
Сейчас да, в админке «Перейти к ресурсу с комментарием» открывает ресурс, к которому привязан ecThread.
Постараюсь поразмыслить, чтобы сделать красивое решение.
Я предлагаю сделать проверку, что если &customFrontUrl или &customBackId не заданы, то у вас все формируется как сейчас, а если заданы, то урл из них берется.
Или вы так и поняли и я зря пишу?))
Сейчас можно сделать, чтобы бы id ресурса можно было передавать.
Те у кого товары в migx, а категории в ресурсах будут передавать сюда id нужной под категории.
И внутри через makeUrl будет уже часть ссылки /category_1/category_2/. Внутри категории товар проще найти, чем вообще в другом месте.
Более того, есть побочный плюс — форму с комментарием на одном ресурсе повесить можно будет, а комментарии в буду выводить на том, к который указан к форме, например.
Дальше, в админке добавлять пакет migx.
По переданному id отыскивать товар в таблице. Вытягивать у него все поля для формирования урл, например — alias (у кого-то может быть другое название) и id категории (ресурс модх).
И по шаблону
$urlSuffix брать из настроек modx
migx ведь по сути только обертка для создания своих таблиц и класса с описанием для товаров. Любая своя таблица с товарами будет именно по такому принципу формироваться, какой бы компонент ее не строил.
Важно только, чтобы человек указал название класса и пакета со своими товарами.
А дальше уже подключать пакет через adPackage и доступ к таблице через класс.
Хотел сделать по клику:
Форма отображается, но не скрывается скрытое поле и голосование не работает. Похоже jquery.form.js не срабатывает.
Вам потребуются:
1. сами jquery.js, jquery.forms.js
2. /assets/components/easycomm/css/web/ec.default.css
3. /assets/components/easycomm/js/web/ec.default.js
Пункты 2 и 3 подключаются через regClientJs/CSS, при вызове через AjaxSnippet этого не происходит.
Но JS не срабатывает, хотя и подключил ec.default.js. Скорее всего JS внутри Ajax работать не будет.
вызовите easyComm.initialize() после загрузки блока через ajax.
Итого:
1. Подключил /assets/components/easycomm/css/web/ec.default.css
2. Подключил /assets/components/easycomm/js/web/ec.default.js
3. Добавил в шаблон формы конструкцию:
4. Добавил в шаблон товара вызов
Все вроде работает.
При обычном вызове сниппета ecForm в head сайта добавляется js код с конфигом компонента.
При вызове через AjaxSnippet этого не происходит.
Таким образом при отправке формы выскакивает js ошибка из-за не найденного конфига, выполнение скрипта прекращается, форма банально обновляет страницу.
Найдите подходящий вам способ добавить конфиг компонента на страницу при вызове через AjaxSnipet.
В чем может быть проблема?
Просто пути проверьте, что если у вас сайт по https работает, то и скрипт также подключен, что он раньше подключен, чем скрипты easyComm.
Но рейтинга нет, сколько нужно минимально комментов для того чтобы выводился рейтинг или проблема не в этом?
Можно отзывам добавить метку (например мастера) и по ней выводить. Я хочу сделать у каждой услуги возможность добавлять отзывы с выбором мастера и у каждого мастера вывести все отзывы о нем и его услугах.
Можно, будет одна основная категория (услуга, например) — это просто стандартный функционал.
А мастер — уже поколдовать нужно будет, или создайте новое поле или используйте существующее, например subject для связи с нужным вам мастером.
https://docs.modx.pro/components/easycomm/snippets
1. Google Recaptcha — api подгружается. Как вывести — не понятно (и есть ли она)
2. Сделайте настройку для возможности вывода скриптов перед закрывающим тегом body, а еще лучше — с возможностью запихнуть их в плейсхолдер. Очень парит, если скрипты на всём проекте — в подвале, а на страницах с сообщениями — в шапке.
3. CSS — добавьте пожалуйста возможность отмены вывода / замены
2. Скрипты имеем ввиду конфиг компонента? Подумаем…
3. Вообще не понял, о чем речь :)
Его приходится переопределять своими стилями в большинстве случаев, поэтому есть смысл сделать возможность отключения его подгрузки опцией сниппета
а рекапча — да… очень не помешала бы, тем более, что настройки для ее подключения по умолчанию есть в системе.
docs.modx.pro/components/easycomm/settings
На примере!
При пустом поле на:
— русской версии: «Ваше имя» выводит сообщение «Вы не указали Ваше имя»;
— английской версии: «Your name» выводит сообщение «Вы не указали Ваше имя»( а должно «You did not enter your name»);
При этом в управлении словарями все переведено.
Помню, некоторое время назад была такая проблема, не было переключения контекста в action, мы исправляли этот момент.
$thread = $modx->getOption('thread', $scriptProperties, ''); и немного ниже, удалите.
После чего еще ниже найдите
$where = array('`Thread`.`name`' => $thread->get('name')); и поменяйте на
$where = array(); по идее все
но либо я чего то не понимаю либо для моих потребностей совсем вариант не подходит но при удалении $thread = $modx->getOption('thread', $scriptProperties, ''); этой части сообщения совсем перестают выводиться да и вывод не понятно можно ли вывести все стандартно [[ecMessagesMay?
]] таким образом? Заранее благодарен за помощь или ответ.
Таким образом эта конструкция выведет все сообщения из всех цепочек (ну точнее, последние 10 штук, т.к. limit=10 по-умолчанию):
А как можно вывести не все или какое-то количество сообщений из цепочки, а конкретные например по id?
ecMessages пока не умеет выводить по id, попробую на днях «научить».
У easyComm есть решение такой проблемы?
Сниппет ecMessages регистрирует css и js файлы, и если этот сниппет вызывать позже основной загрузки страницы, то и файлов не будет подключено…
Вот так выглядит ответ в инспекторе:
Если обновить страницу, то все встает на свои места:
А, ну так там хитрая конструкция для управления выводом, еще со старым (не феном в общем) способом из pdoTools, при помощи комментариев. Что-то не могу ссылку найти. Видимо ajax режим это не обрабатывает. Можно на феном чанки переписать вам попробовать.
И всё работает.
А то очень неудобно проставлять и рейтинг и цепочку при создании =)
2. У ресурса может быть несколько цепочек, какую из них выбрать?.. думаю, что можно искать по шаблону resource-[[*id]], и если она есть — прописывать ее, иначе — пустое поле. И естественно, что это только на странице ресурса.
Прописываются при создании сообщения — thread, при создании цепочки — resource, name.
Естественно, только если мы работаем на странице ресурса.
+ можно создать системную настройку ec_rating_default для того, чтобы оценка прописывалась автоматически.
Установил компонент, к сожалению он не захотел работать из коробки, выдает ошибку core/components/easycomm/model/easycomm/easycomm.class.php on line 66 куда копать?
А текст ошибки то? На этой строчке ничего интересного я не вижу.
joxi.ru/bmoORa7hMxq58m
Нажимаю «обновить» и получаю ошибку «Неверные данные» joxi.ru/brR8g7bUQJERY2
не работает пагинация. Вызываю через pdoPage
Причём адрес в адресной строке меняется а контент нет
Так же не работает настройка, что бы убрать рейтинг, тему сообщения и контактные данные. Настройки прописаны но они никак не влияют на процесс
Насчет пагинации я отписался, проблем не наблюдаю у себя, странички листаются, видимо в чем-то еще загвоздка.
У компонента был небольшой баг в том, что если объект ecThread еще не создан — то выводится пустота (вместо рейтинга 0) при вызове сниппета ecThreadRating…
Наверное это оно, постараюсь пофиксить в течение дня.
Вызов ecForm как раз и создает объект ecThread в базе данных.
Если не поможет — пишите в поддержку, лучше сразу с доступами к админке, я посмотрю в чем дело.
Сергей2. Как вывести рейтинг для каждого товара в списке товаров? Джойнить?
СергейСергейПри работе через аякс стили не будут подгружаться, т.к. по-умолчанию они подключатся к странице в момент вызова ecMessages, а этот момент у вас уже после того, как страница улетела в браузер.
Уберите в настройках компонента пути к файлам стилей и скриптов и подключите их вручную в шаблон сайта.
Все сделал, как вы описали, однако, проблема не решилась… Firebug показал, что блок «ec_reply_text», находящийся в чанке вывода одного отзыва, в принципе не подгружаются. Т.е. идет тег P с текстом самого отзыва (p[[+text]]/p), а сразу после него голый текст ответа без обрамляющих его тегов. А имя ответившего (сам текст) вообще не выводится, т.е. чанк «ec_reply_author» никак не отрабатывает. Но если принудительно обновить страницу (адрес-сайта.ru/категория/?page=4), то все отрабатывает, как положено. Странно.
1) в чанке «tpl.ecMessages.Row» убрал заккоментированные подчанки:
2) на основе них создал дополнительный чанк, например, «ec_reply_text» следующего содержания:
3) далее, в чанке «tpl.ecMessages.Row» заменил плейсхолдер [[+reply_text]] на следующего содержания:
Теперь все работает, как надо )))), а настройку стилей и скриптов фронтэнда можно не трогать.
Я вот так и не нашёл как выводить Gravatar. В документации этого нету, в стандартных чанках тоже. Здесь тоже не говориться ничего.
зачем-то размер аватара прописан жестко, хотя в настройках есть параметр ec_gravatar_size. Плюс нельзя выбрать тип граватара.
Я решил сделать вот так:
Алексей, есть возможность импорта комментариев из csv или excel?
Хочу на базе Вашего модуля сделать отзывы к товарам и импортировать их пакетно с другого ресурса…
jquery и jquery.form стоит.
Вывод компонента по дефолту:
[[!ecForm]]
[[!ecMessages]]
Подскажите плиз в чем дело?
Как то маловато вводных данных, что значит «Не работает»? Не показывает форму, не выводит сообщения, не отправляется форма?
Для начала посмотрите ошибки в консоли браузера, и лог ошибок modx, возможно проблема прояснится. Если ничего не получится, то пишите в техподдержку компонента.
Из частых проблем — еще версию php посмотрите, на 5.3, как ни странно, на некоторых хостингах были проблемы, поднятие версии их решало.
Выводит форму, но не отправляет сообщение, после заполнения формы, просто обновляется страница, а в админке новых сообщений нет… Попробовал из админки сам написать, выводит.
PHP 7.0, пробовал ставить разные версии, не помогло.
Ошибок в консоле браузера нет. Зато появляются ошибки после попытки отправки сообщения в логах модх:
[2017-12-13 10:48:52] (ERROR in modContext::makeUrl @ /home/core/model/modx/modcontext.class.php: 321) Resource with id 7 was not found in context mgr
Часто помогает смена версии php на более старшую.
У предыдущего пользователя точно така же проблема была, там удалось найти ошибку?
и вот эти файлы, пришлось подключить вручную, это моя ошибка или баг у компонента?
pnotify.custom.css
pnotify.custom.js
Вероятно, они как-то сконфликтовали…
Как в вашем дополнении можно динамически вывести отзывы со страниц на странице категории?
Если перечислить их в threads, выводит, но страницы постоянно добавляются\удаляются.
Есть ли способ выводить отзывы динамически?
Категория является родителем для страниц.
Отзывы должны выводится на странице и в категории.
сейчас вызов такой
[[!ecMessages?
&threads=`resource-[[id]]`
&showUnpublished=`0`
&sortby=`date`]]
Или укажите &threads=`*`, чтобы выбирать все цепочки, а нужное ограничение задайте через параметр &where:
По идее это должно сработать.
&where=`{«Resource.parent»: ID_КАТЕГОРИИ}`
Не сработало, буду мучить сниппет тогда
Наумов Алексей 09 ноября 2016, 20:56 # ↑ 0
Добрый день. Используйте параметр thread у сниппетов, например:
// на странице Дом
&thread=`house-[[*id]]`
// на странице Отзывы
&thread=`house-[[*parent]]`
так не подходит, тогда отображаются все отзывы и на странице и в категории, на странице должны отображаться только отзывы с текущей страницы.
Не могу разобраться в чем проблема, на основе шаблона, создал свой шаблон, с сохранением всех необходимых классов и параметров, но форма не отправляется.
Помогите разобраться в чем накосячил? С дефолтным шаблоном все работает
Вызов:
Шаблон:
Ну что-то кода много) сложно сходу понять. Вижу что action у формы заполнили — должен быть пустой, но вроде это не влияет. Еще input и span с текстом ошибки должны быть внутри слоя с классом form-group, скрипт так ищет, какую ошибку показать. Может быть в этом дело? Ошибка есть, а вы ее не видите?
Наверно стоит сделать возможность болей кастомизации шаблона.
Использовать input type=«submit» — уже не комильфо :-)
когда в админке отвечаешь на какой то из отзывов, во фронте, пока он в первой тройке, то есть его видно сразу, ответ админа виден, но как только он уходит и нажимаешь на «показать еще», то ответ админа не видно. То есть отзыв есть, а ответ на него уже не виден
отображается: вот так на видимой странице, но после нажатия «показать еще» только ответ и все без стилей и автора ответа.
а с веномом
но и после нажатия «показать еще» отображается так же
может кому еще понадобится, теперь все ответы отображаются корректно
UPD: Иногда форма вообще не отправляется, а страница просто перезагружается.
На счетчике сообщений проблем нет — справляется параметр threads, а на рейтинге то он отсутствует. Можно его как-то прикрутить или нужно сделать какой-то альтернативный вызов?
что я не так делаю?
а самого капчи нет, если выводить с помощью recaptcha2 то тогда появляется поле с галочкой «я не робот», но отзыв все равно можно добавить без проверки капчки, читала что проверку делают хуки, но так и не дошло какие нужны хуки да и сам этот вызов помещать над form для того чтобы в отзывах капча работала как надо.
Парсер pdoTools ругается на все что в фигурных скобках)
Если да, то как я понял добавлять проверку нужно перед $easyComm->createMessage($_POST); как-то так:
Или есть более изящный способ? Может быть плагин на одно из событий easyComm?
Проверять думаю лучше до switch, где-нибудь повыше.
Насчет большей изящности…
ну есть событие OnBeforeEcMessageSave (типа OnBeforeDocFormSave, только для сообщения ecMessage). В нем наверное можно проверять, если что не так, то если не ошибаюсь, там можно добавлять ошибку
если будет ошибка — то добавление сообщения прервется.
Не забывайте, что OnBeforeEcMessageSave вызывается как при создании, так и при сохранении сообщения, как с фронта, так и с админки.
Ну и напоследок вопрос — что за проверка?)
Если интересно, можете почитать тут.
Через инспектор браузера выясните, что это.
Работает отлично, подскажите пожалуйста как вывести ссылку на страницу с которой был оставлен коммент.
1. Есть параметр resourceFields у сниппета, через который можно указать, какие поля ресурса цеплять. Добавляются с префиксом «resource_».
2. А еще join делается на цепочку, и доступно поле thread_resource, где id ресурса.
Пытаюсь заставить искать ресурсы по комментам, вывод делаю так:
Подскажите что не так?
Вот цитата из документации на mSearch2:
отсюда видим, что поиск может идти по полям документа и по комментариям Tickets, так mSearch2 сделан!
что то я не понимаю…
«Прописать» — посмотрите исходный код mSearch2, мб по аналогии с Tickets сможете внести изменения, чтобы и в других таблицах искал.
чтобы добавить произвольные слова в индекс?
Подскажите пожалуйста, как вывести значение tv ресура?
Основные поля выводит:
а tv нет
в журнале ошибок следующее:
я так понимаю нужно использовать leftJoin?
но в тексте ошибки прямо написано:
Попробуйте указать этот параметр!!!
Или цепочка привязывается к странице отправки..*?
Диалог построить нельзя, наверное Tickets в этом случае больше подойдет.
Сообщения перестали выводиться, а в журнале ошибок вот такое:
[2019-01-18 13:02:01] (ERROR @ /var/www/u0487943/data/www/samara.dental/core/xpdo/om/xpdoobject.class.php: 1452) Error 23000 executing statement:
INSERT INTO `modx_ec_threads` (`resource`, `name`, `title`, `message_last`, `count`, `rating_simple`, `rating_wilson`, `properties`) VALUES (1448, 'resource-183', '', 0, 0, '0', '0', '{\«thread\»:\«resource-183\»,\«formId\»:\«resource-183\»,\«allowedFields\»:\«user_name,user_email,user_contacts,subject,rating,text\»,\«requiredFields\»:\«user_name,text\»,\«antispamField\»:\«hidden-in\»,\«autoPublish\»:\"\",\«tplForm\»:\«institution.reviews.tpl\»,\«tplFormReCaptcha\»:\«tpl.ecForm.ReCaptcha\»,\«tplSuccess\»:\«review-siccess.tpl\»,\«mailManager\»:\«zybin_m.a@mail.ru, manager@samara.dental\»,\«newEmailSubjUser\»:\"\",\«tplNewEmailUser\»:\«tpl.ecForm.New.Email.User\»,\«newEmailSubjManager\»:\"\\u041e\\u0441\\u0442\\u0430\\u0432\\u043b\\u0435\\u043d \\u043e\\u0442\\u0437\\u044b\\u0432 \\u043e\\u0431 \\u0443\\u0447\\u0440\\u0435\\u0436\\u0434\\u0435\\u043d\\u0438\\u0438 \\\"\\u041a\\u0440\\u0443\\u0433\\u043b\\u043e\\u0441\\u0443\\u0442\\u043e\\u0447\\u043d\\u0430\\u044f \\u0441\\u0442\\u043e\\u043c\\u0430\\u0442\\u043e\\u043b\\u043e\\u0433\\u0438\\u044f \\u0414\\u0418\\u0410\\u041c\\u0410\\u041d\\u0422\\\"\",\«tplNewEmailManager\»:\«tpl.ecForm.New.Email.Manager\»,\«updateEmailSubjUser\»:\"\",\«tplUpdateEmailUser\»:\«tpl.ecForm.Update.Email.User\»}')
Array
(
[0] => 23000
[1] => 1062
[2] => Duplicate entry 'resource-183' for key 'unique_key'
)
Алексей, подскажи, можно ли реализовать дополнительный вопрос к уже имеющемуся?
Например, как здесь:
Если можно, то подскажи реализацию. Интересует в основном для НЕавторизованных пользователей.
Заранее, благодарю.
а на втором «уровне» цепочку называть типа
Вызов сниппета ecForm будет внутри чанка tpl.ecMessages.Row, в имени цепочки используем и id ресурса и id текущего ecMessage. id ресурса то в принципе и не обязательно… я добавил, просто что-бы потом можно было фильтровать по-удобнее… в общем надо подумать, как лучше. Естественно, все вызовы сниппетов нужно самому писать.
Давайте я произведу свою калькуляцию (5 + 3 + 1): 3 = 3
Почему показывает неправильный рейтинг? почему неправильная формула, когда мы складываем все оценки и делим сумму на количество оценок (так учили еще в школе). Как это исправить?
По-умолчанию вильсон, отсюда и такой средний бал.
Чтобы было среднее арифметическое — в используемых чанках поменяйте постфикс "_wilson" на "_simple".
за пакет респект!
При авторизации в админке рейтинг показывает
drive.google.com/file/d/1ZCppECzO9ZcASlVrgwmMA0mwi7UEIBLi/view?usp=drivesdk
После очистки кеша и открытии в инкогнито рейтинг пропадает
drive.google.com/file/d/14kl05u_Tkyb69TnOs8cKe7KVON8oYeg9/view?usp=drivesdk
Как быть? Политики, доступа? Куда копать?
drive.google.com/file/d/1yHACHROCXrADRgbKYa6npfd68tipIjaJ/view?usp=drivesdk
Все что там есть, так это получение объекта цепочки из базы:
zzcash.net/ru/oneclickmoney_ru/#reviews
drive.google.com/file/d/1P_RW_v-TDIbNABxLl15e4HB2eIjovrug/view?usp=drivesdk
И вот что показывает если залогинен или не залогинен
drive.google.com/file/d/1dQSD7Yi04Bxeoojyo6rDpwayiIJDnwGR/view?usp=drivesdk
drive.google.com/file/d/1dmwV0Zct1ckv577Lwm6JgL_qgwQunvKh/view?usp=drivesdk
Вопрос про доступ для менеджеров. Сам я, как администратор создаю и редактирую сообщения, а менеджерам пишет «Доступ запрещен». Не пойму, какие именно дать права на сохранение и редактирование?
Вообще импорта нет, только вручную писать скрипт.
Нужно его вывести вместо user_name у ecMessages, как это сделать?
Можно каждый раз какой-нибудь сниппет вызывать для вывода поля по id пользователя.
Можно модификатором возпользоваться (Fenom)
А id пользователя, если комментарий оставил зарегистрированный, доступно в чанке как createdby
fullname => user_name
email => user_email
Вот кусочек кода из сниппета ecForm:
так не робит
Стоит смотреть в сторону where и thread.resource != текущему ресурсу.
подскажите, что не верно?
Добавьте параметр
хоть что там происходит при формировании запроса?
а затем еще якорь на конкретный комментарий сделать
Есть небольшое добавление по выводу звёзд на рейтингах. Текущий ваш вариант не учитывает пробел между звёздами (который необходим, чтобы они выводились не слитно), поэтому выводит не совсем корректно. Т.е. если рейтинг 4.5, к примеру, то на 5-ой звезде он закрашен лишь чуть, а не наполовину и т.п…
Добавил небольшую функцию в сниппет ecThreadRating, для корректной заливки.
Кусок кода ниже. Верхушка и конец те же.
Надеюсь пригодится!
P.s. Также для кастомизации звезд (свой дизайн), перевёл в scss и задал для своих размеров.
Размеры звёзд задавать целыми (px), отступ справа тоже. Легко делается в Figma по размерам, экспорт в svg.
Может кому пригодится (часть кода, для понимания):
Подскажите возможно ли добавить возможность указывать Положительный этот отзыв или Отрицательный?
То есть помимо звездного рейтинга возможность ставить лайк либо дизлайк а затем выводить результат на сайте вместе с отзывом и звездами
пример формы:
пример отзыва:
У дополнения нет такой функции.
Однако вы можете через плагины добавить произвольное поле в базу данных и сохранять нужные значения в него.
Естественно, придется дописать и функционал на js.
Можно ли ограничить кол-во сообщений в сутки (или в месяц) с одного ip например. Грубо говоря не более одного комментария в месяц, при попытке добавить еще одно выдавать сообщение-предупреждение.
Можно попробовать какой-нибудь плагин сделать на событие создания сообщения, но не уверен, что все получится 100% без вмешательство в ядро компонента
В компоненте не нашел метода editMessage.
А вот демонстрации у меня нет. В целом это выглядит как просто input type=file с атрибутом multiple.
В админке — просто вкладка в окне редактирования сообщения со списком файлов и возможностью ими управлять (удалить файл).
Есть версия, что дело может быть в том, что ваш сервер не может корректно соединится с сервером modstore из-за того, что ему «не нравится» ssl сертификат. Но это только версия.
Вопрос такой, возможно ли один отзыв прикреплять к нескольким цепочкам? То есть, например, при публикации отзыва клиент выбирает на какого врача он хочет оставить отзыв, какой услугой воспользовался и в какой клинике. Соответственно, как я понимаю, отзыв должен залететь в 4 цепочки: все отзывы, отзыв на врача, отзыв на услугу, отзыв на клинику.
Здесь можно попробовать так, к примеру.
1. Вы привязываете отзыв к услуге (через thread).
2. У отзыва есть поле subject, его можно использовать, чтобы хранить имя врача.
3. Добавить новое текстовое поле clinic для клиники.
На странице врача и клиники ставить у ecMessages thread=* (т.е. любая цепочка), а отзывы фильтровать через where по полям subject и clinic/
Пытаюсь вывести отзывы на странице врача. Если написать имя и фамилию врача самому в поле where, то всё ок, выводится, но если брать те же данные из поля pagetitle например, то пусто. При этом если смотреть логи, то запросы абсолютно идентичны.
Так не работает:
Так все норм:
Простой способ — передавать id отзыва через GET параметр при запросе к специальной странице «Читать отзыв». Ну и там далее получать этот отзыв из базы и выводить.
Делаю ссылку отзыву «Читать весь отзыв» site.ru/reviews?id=5
Вопрос как автоматизировать этот процесс?
и создаем сниппет getMessageIdFromRequest:
но тут нет никакой «защиты» от неверно переданного id (несуществующего, например, или удаленного).
Сделал так
сниппет get
Механизма хуков нет, есть возможность повесить плагин (в смысле обычный плагин MODX) на различные события (создание сообщения, удаление и т.п.).
Можно ли как-то вывести на странице категории, что на товары в данной категории уже есть 8 оценок и средний балл = (5+4,5+5)/3= 4,83?
Сайт с контекстами.
Заказчик хочет, чтобы на странице товара, в отзывах о товаре, показывались отзывы со всех контекстов этого товара. Благодаря threads в сниппете ecMessages, эту проблему вроде удалось решить используя такую конструкцию:
а вот со сниппетом ecThreadRating такой фокус не проходит, так как там изначально нету параметра threads, и соответственно нельзя указать несколько цепочек комментариев для обработки сниппетом.
Может кто подскажет как можно решить данную проблему или натолкнёт на правильный ход мыслей?
Напишите свой сниппет, основываясь на ecThreadRating, который будет брать кол-во отзывов и рейтинг обоих цепочек и «складывать» нужным вам способом.
Поэтому и спрашиваю, может у кого была похожая задача и он её решил? Тем более я не первый с таким вопросом:
1: 5 отзывов, рейтинг 4
2: 180 отзывов, рейтинг 3,5
3. 1 отзыв, рейтинг 5
Вопрос: какой средний рейтинг у категории с этими товарами? Просто сложить рейтинг и поделить на кол-во отзывов? Ну нет… да и вообще, как это звучит по логике?.. Средний рейтинг всех наших мобильных телефонов равен 4? Как-то не очень понятно звучит… а если внутри категории «Телефоны» с десяток подразделов (да еще вложенных в 2-3 уровня), а внутри порядка 500 товаров… что с этим делать, как считать? А если используется miniShop2 с его мультикатегориями… у меня столько вопросов возникает))) а если товар перенести в другой раздел, все пересчитывать?..
А конкретно в вашем случае я бы рассмотрел возможность сделать для каждого товара только одну цепочку с отзывами, например по артикулу: product-ARTICLE вместо стандартного resource-ID (так у вас 2 цепочки отзывов для фактически одного товара).
Ну и спасибо за дельный совет, попробую реализовать.
Не могу понять как мне реализовать это через ключ {user_contacts}
При отправке формы intl-tel-input записывает номер телефона в скрытое поле
Не забыть указать поле user_contacts в параметре allowedFields сниппета ecForm.
Делаю разметку Product в форм JSON-LD
Вывожу сообщение по средствам сниппета
Код чанка
Проблема заключается в том, что в последнем или единственном отзыве не должно быть запятой.
Пока что сделал лимит 1 и выставил без запятой чанк.
Как прописать условие не пойму ни как.
И чанка, само собой, убираем.
Идея — есть N товаров, у каждого товара M отзывов. Хочу на странице Отзывы вывести все отзывы всех товаров, получится?