Компонент - Обзоры для УК и\или InstantShop

844
На снимке форма редактирования, добавление обзора.

более качественные снимки.


Скачать для УК

В заголовке упоминаю что компонент для УК и\или InstantShop.
все по тому что основная цель компонента - это публиковать обзоры на объект УК и\или InstantShop.
В общем, не составит сложности сделать возможность публиковать обзор на любой другой объект не связанный с УК и\или InstantShop.

пользователи могут оставлять комментарии на этот обзор.
публиковать повторный обзор не разрешается.

а для InstantShop можно ограничить публикацию путем проверки заказ принадлежащего пользователю.
т.е. проверяем, имеется ли товар среди его покупок.


Демо
Раздел обзоры
Раздел Каталог

Вопрос - ответ

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

можно и к статьям сделать обзоры. вернее такого компонента нет. есть
компонент Контент, из него выходят, новости, статьи, страницы..
т.е.
ко всем этим разделам можно подключить обзоры.. Для этого мне нужно
будет внести незначительные изменения в компонент.



Установка

по теории, нужно только распаковать содержимое архива и установить компонент.
при распаковке нужно будет заменить файлы:
components/catalog/frontend.php
components/catalog/model.php
templates/_default_/com_catalog_item.tpl
templates/_default_/com_comments_view.tpl


каких либо сложных изменений в упомянутые файлы не вносилось.
можно обойтись без замены файлов но внести изменения самостоятельно:

файл components/catalog/frontend.php
найти
Код PHP:
  1. $smarty->display('com_catalog_item.tpl');
следом добавить
Код PHP:
  1.  
  2. //Выводим обзоры на товар, если есть нато разрешение для рубрики в которой находиться данный товар
  3. if($inCore->isComponentInstalled('rew')){
  4. $model->includeRew();
  5. rew('catalog',$item['id']);
  6.  
файл components/catalog/model.php
в самый конец файла перед }
добавить:

Код PHP:
  1.  
  2. /* ===================================функции нужные для компонента - "Обзоры"================================================= */
  3. /* ==================================================================================================== */
  4. public function includeRew(){
  5. include_once PATH."/components/rew/frontend.php";
  6. }
  7. public function getRewTarget($target, $target_id) {
  8.  
  9. $result = array();
  10.  
  11. switch($target){
  12.  
  13. case 'catalog': $item = $this->inDB->get_fields('cms_uc_items', "id={$target_id}", 'title');
  14. if (!$item) { return false; }
  15.  
  16. $result['link'] = '/catalog/item'.$target_id.'.html';
  17. $result['title'] = $item['title'];
  18. break;
  19.  
  20. }
  21.  
  22. return ($result ? $result : false);
  23.  
  24. }
  25.  
  26.  
  27.  
  28. /**
  29.   * Регистрирует тип цели для обзоров в базе
  30.   * @param string $target - Цель
  31.   * @param string $component - Компонент
  32.   * @param string $title - Название цели во множ.числе (например "Рубрика")
  33.   */
  34. public function registerRewTarget($target, $component, $title) {
  35.  
  36. $inDB = cmsDatabase::getInstance();
  37.  
  38. $sql = "INSERT INTO cms_rew_targets (target, component, title)
  39. VALUES ('$target', '$component', '$title')";
  40.  
  41. $inDB->query($sql);
  42.  
  43. return true;
  44.  
  45. }
  46.  
  47. public function getRewTargets() {
  48.  
  49. $inDB = cmsDatabase::getInstance();
  50.  
  51. $targets = $inDB->get_table('cms_rew_targets', 'id>0', '*');
  52.  
  53. return $targets;
  54.  
  55. }
  56.  
  57. /**
  58.   * Удаляет все обзоры для указанной цели
  59.   * @param string $target
  60.   * @param int $target_id
  61.   * @return boolean
  62.   */
  63. public function deleteRew($target, $target_id){
  64.  
  65. $inDB = cmsDatabase::getInstance();
  66.  
  67. $comments = $inDB->get_table('cms_rew', "target='{$target}' AND target_id='{$target_id}'", 'id');
  68.  
  69. if ($comments){
  70.  
  71. foreach($comments as $comment){
  72. cmsActions::removeObjectLog('add_rew', $comment['id']);
  73. }
  74.  
  75. $sql = "DELETE FROM cms_rew WHERE target='{$target}' AND target_id='{$target_id}'";
  76.  
  77. $inDB->query($sql);
  78.  
  79. }
  80.  
  81. return true;
  82.  
  83. }
  84.  
  85. /**
  86.   * Возвращает количество обзоров для указанной цели
  87.   * @param string $target
  88.   * @param int $target_id
  89.   * @return int
  90.   */
  91. public function getRewCount($target, $target_id){
  92. $inDB = cmsDatabase::getInstance();
  93. if ($this->isComponentInstalled('rew')){
  94. $sql = "SELECT id FROM cms_rew WHERE target = '$target' AND target_id = '$target_id' AND published = 1";
  95. $result = $inDB->query($sql) ;
  96. return $inDB->num_rows($result);
  97. } else { return 0; }
  98. }
  99.  
  100. function buildRewRating($rating){
  101. $inCore = cmsCore::getInstance();
  102. $inDB = cmsDatabase::getInstance();
  103. global $_LANG;
  104. $rating = round($rating, 2);
  105. $html = '<a href="#" title="'.$_LANG['RATING'].': '.$rating.'" style="cursor:default">';
  106. for($r = 0; $r < 5; $r++){
  107. if (round($rating) > $r){
  108. $html .= '<img src="/components/rew/js/raty/img/star-on.png" border="0" />';
  109. } else {
  110. $html .= '<img src="/components/rew/js/raty/img/star-off.png" border="0" />';
  111. }
  112. }
  113. $html .= '</a>';
  114. return $html;
  115. }
  116. /* ==================================================================================================== */
  117.  
Шаблон для InstantCMS #5b | Шаблон для InstantCMS #6
Комментарии (54)
Ленивый 18 июля 2012 в 22:18 0
small user social cms
Выглядит оч качественно!! +
Ленивый 18 июля 2012 в 22:20 +1
small user social cms
один малюююсенький момент - Плюсы всё-таки поместить под рейтинги, а не справа
Денис Васильевич 18 июля 2012 в 23:22 0
small user social cms
:) я тока заметил..
Man 31 июля 2012 в 19:56 0
small user social cms
Да, действительно Плюсы нужно с новой строчки сделать, а то каша какая-то получается.
Алексей Тимофеев 18 июля 2012 в 22:57 -3
small user social cms
С демо могу помочь +
Денис Васильевич 18 июля 2012 в 23:21 0
small user social cms
благодарю но не стоит мороки..
она днях заработает.
просто, хостеры бесплатно обслуживать сайт не хотят
:)
Денис Васильевич 18 июля 2012 в 23:26 0
small user social cms
ссылка на обзор выглядит примерно так:
Код PHP:
http://test2.ru/rew/subaru-domingo_25.html
цифра в конце это обзора id
DeeMon 19 июля 2012 в 16:35 +2
small user social cms
404 - Станица не найдена
Денис Васильевич 19 июля 2012 в 17:08 +1
small user social cms
:) шутник однако
Анатолий 19 июля 2012 в 19:36 0
small user social cms
это просто пример smile он не работает
lezginka.ru 19 июля 2012 в 00:09 0
small user social cms
+
Dorimen 20 июля 2012 в 00:32 +1
no avatar
Простите, не могу понять сути данного модуля.

А вот у меня такой вопрос, можно ли связать объекты из УК с тегами статьи? Например, есть статья о тракторах. В отдельном модуле выводим 5 объектов, которые имеют в своем названии полностью или частично тег статьи. Это можно сделать и не отдельным модулем, а вставлять внутрь самой статьи врезкой, например.

Зачем? Чтобы сделать релевантные объявления для тех, кто интересуется данной темой. Например, у меня УК - это каталог товаров, которые выставлены на продажу...
Денис Васильевич 20 июля 2012 в 12:19 0
small user social cms
вся суть в словах обзор, отзыв, рейтинг. и в описании моем
Dorimen 20 июля 2012 в 12:34 0
no avatar
Я уже понял. :))))) Ночью читал Ваш анонс - не сообразил, что к чему. :)
Денис Васильевич 20 июля 2012 в 13:11 0
small user social cms
:) а то я ужа начал думать я такой мудреный.. замутил не весь что, что мне одному понятно..
Dorimen 20 июля 2012 в 13:20 0
no avatar
А вот у меня такой вопрос, можно ли связать объекты из УК с тегами статьи? Например, есть статья о тракторах. В отдельном модуле выводим 5 объектов, которые имеют в своем названии полностью или частично тег статьи. Это можно сделать и не отдельным модулем, а вставлять внутрь самой статьи врезкой, например.

Зачем? Чтобы сделать релевантные объявления для тех, кто интересуется данной темой. Например, у меня УК - это каталог товаров, которые выставлены на продажу...

http://www.instantcms.ru/forum/thread11552-1.html#94518

По этому поводу ничем не можете помочь? smile За деньги, разумеется. :)
yury 21 июля 2012 в 11:10 0
no avatar
а что за макет у вас на сайте?)

вроде симпотишный для адаптации дальнейшей)
Денис Васильевич 27 июля 2012 в 00:38 0
small user social cms
добавил ссылку для скачивания
Александр 27 июля 2012 в 13:14 0
no profile
Компонент интересный, но заметил один ньюанс, Есть ссылка показать обзор, а ссылки скрыть обзор нет. В результате, если хочешь скрыть обзор к одному товару и посмотреть обзор к следующему, чтобы небыли открыты обзоры ко всем товарам, то надо пере загружать страницу.
Думаю, суть понятна, надо сделать кнопку или ссылку «Скрыть обзор». Тогда будет полный порядок.
FlaZa 30 июля 2012 в 18:42 0
small user social cms
Залил содержимое rew в папку components, поменял в запросе префиксы cms_ на префиксы своей базы, нажимаю установить в разделе компонентов, но выдает следующее, почему так?

Код PHP:
  1. Duplicate column name 'rew'
  2. ALTER TABLE `cas_uc_ratings` ADD
  3. (
  4. `rew` int(11) DEFAULT '0',
  5. `user_id` int(11) DEFAULT '0'
  6. );
Денис Васильевич 30 июля 2012 в 18:53 0
small user social cms
После предыдущей попутки установки в базе уже завелись такие таблицы.
Их можно удалить через PHPMyAdmin.
Денис Васильевич 30 июля 2012 в 18:54 0
small user social cms
а точнее ячейка rew в таблице cas_uc_ratings
FlaZa 31 июля 2012 в 00:22 0
small user social cms
Удалил сначала rew, не помогло, удалил и user_id, при установке начинает выдавать:

Код PHP:
  1. Duplicate key name 'fieldsdata'
  2. ALTER TABLE `cas_uc_items` ADD
  3. (
  4. FULLTEXT KEY `fieldsdata` (`fieldsdata`),
  5. FULLTEXT KEY `meta_desc` (`meta_desc`),
  6. FULLTEXT KEY `title_2` (`title`)
  7. );
Денис Васильевич 31 июля 2012 в 00:30 0
small user social cms
тогда откройте файл install.sql и удалите из него строки

Код PHP:
  1.  
  2. ALTER TABLE `cas_uc_items` ADD
  3. (
  4. FULLTEXT KEY `fieldsdata` (`fieldsdata`),
  5. FULLTEXT KEY `meta_desc` (`meta_desc`),
  6. FULLTEXT KEY `title_2` (`title`)
  7. );
и в остальных случай можете так же проделать
Денис Васильевич 31 июля 2012 в 00:34 0
small user social cms
кстати.. раз уж такая катавасия пошла.. можете просто выполнять запросы через phpMyAdmin...
а после очистить install.sql и установить компонент, чтобы записать данные о компоненте в базу.
FlaZa 31 июля 2012 в 00:43 0
small user social cms
Удалил

Код PHP:
  1. ALTER TABLE `cas_uc_items` ADD
  2. (
  3. FULLTEXT KEY `fieldsdata` (`fieldsdata`),
  4. FULLTEXT KEY `meta_desc` (`meta_desc`),
  5. FULLTEXT KEY `title_2` (`title`)
  6. );
Теперь выдает

Код PHP:
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`id`), KEY `user_id` (`user_id`), KEY `target_id` (`target_id`) ) ENGINE=My' at line 28
  2. CREATE TABLE `cas_rew` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `cat_id` int(11) DEFAULT '0',
  5. `parent_id` int(11) NOT NULL,
  6. `pid` int(11) NOT NULL,
  7. `user_id` int(11) NOT NULL,
  8. `target` varchar(20) NOT NULL,
  9. `target_id` int(11) NOT NULL,
  10. `guestname` varchar(200) NOT NULL,
  11. `content` text NOT NULL,
  12. `content_bbcode` text NOT NULL,
  13. `pubdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  14. `published` int(11) NOT NULL DEFAULT '1',
  15. `is_new` int(11) NOT NULL DEFAULT '1',
  16. `target_title` varchar(150) NOT NULL,
  17. `target_link` varchar(200) NOT NULL,
  18. `ip` varchar(15) NOT NULL,
  19. `is_hidden` tinyint(1) DEFAULT '0',
  20. `points` int(1) DEFAULT '0',
  21. `points2` int(1) DEFAULT '0',
  22. `points3` int(1) DEFAULT '0',
  23. `points4` int(1) DEFAULT '0',
  24. `plusi` text NOT NULL,
  25. `minusi` text NOT NULL,
  26. `zametka` text NOT NULL,
  27. `seolink` varchar(150) NOT NULL
  28.  
  29. PRIMARY KEY (`id`),
  30. KEY `user_id` (`user_id`),
  31. KEY `target_id` (`target_id`)
  32. ) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=25 ;
Сервер:
Apache/2.2.14 (Ubuntu)
Версия MySQL-клиента: 5.1.41
PHP расширение: mysqli
FlaZa 31 июля 2012 в 00:51 0
small user social cms
Через phpMyAdmin тоже пробовал...

Код PHP:
  1. SQL-запрос:
  2.  
  3. CREATE TABLE `cas_rew` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cat_id` int(11) DEFAULT '0', `parent_id` int(11) NOT NULL, `pid` int(11) NOT NULL, `user_id` int(11) NOT NULL, `target` varchar(20) NOT NULL, `target_id` int(11) NOT NULL, `guestname` varchar(200) NOT NULL, `content` text NOT NULL, `content_bbcode` text NOT NULL, `pubdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `published` int(11) NOT NULL DEFAULT '1', `is_new` int(11) NOT NULL DEFAULT '1', `target_title` varchar(150) NOT NULL, `target_link` varchar(200) NOT NULL, `ip` varchar(15) NOT NULL, `is_hidden` tinyint(1) DEFAULT '0', `points` int(1) DEFAULT '0', `points2` int(1) DEFAULT '0', `points3` int(1) DEFAULT '0', `points4` int(1) DEFAULT '0', `plusi` text NOT NULL, `minusi` text NOT NULL, `zametka` text NOT NULL, `seolink` varchar(150) NOT NULL PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `target_id` (`target_id`)[...]
  4.  
  5. Ответ MySQL:
  6. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`id`),
  7. KEY `user_id` (`user_id`),
  8. KEY `target_id` (`target_id`)
  9. ) ENGINE' at line 28
Вообще не понимаю, в чем может быть проблема... Такой интересный компонент, и не желает работать:((
Марат 31 июля 2012 в 07:14 +1
small user social cms
В запросе пропущена запятая, строка 27. Нужно
Код PHP:
  1. `seolink` varchar(150) NOT NULL,
а у вас
Код PHP:
  1. `seolink` varchar(150) NOT NULL
Денис Васильевич 31 июля 2012 в 11:30 0
small user social cms
как так получилось что у Вас в базе уже присутствуют такие поля?..
видимо первая установка завершилась не удачно. предположим что это из пропущенной запятой в запросе..
вот от седова и исходим. в файле instal.sql поглядите какие таблицы и поля затрагиваются при установке, удалите эти таблицы, поля через phpMyAdmin. а после снова запустите установку.
FlaZa 31 июля 2012 в 14:37 0
small user social cms
Действительно, поставил запятую и все пошло(делал запрос через phpMyAdmin).
Затем установил через админку, появился пункт "обзоры" в компонентах, но нет его настроек, не включения. Облазил всю админку, негде не нашел, как его можно прикрутить к УК или InstantShop(ко второму конечно предпочтительнее). Само по себе оно не появилось не в том не в том.
Нужно еще что-то сделать, или установка прошла не корректно?
Денис Васильевич 31 июля 2012 в 14:40 0
small user social cms
тем самым вы только занесли данные необходимые для работы компонента. а сам компонент не установили. нет записи о нем в базе данных.

http://www.instantcms.ru//blogs/shablony-moduli-narabotki/komponent-obzory-dlja-uk-i-ili-instantshop.html#c39038
Денис Васильевич 31 июля 2012 в 14:43 0
small user social cms
настроек нет. есть вывод списка обзоров
Денис Васильевич 31 июля 2012 в 14:46 0
small user social cms
компонент будет виден в разделе /rew
а добавить запись можно на странице объекта каталога.
для прикрути к InstantShop нужно немного переделать код.
FlaZa 31 июля 2012 в 15:17 0
small user social cms
Я сделал следующее:
1. Залил содержание install.sql через phpMyAdmin.
2. Очистил install.sql
3. Зашел в компоненты - установить новый. Установил. В списке компонентов появился "Обзоры".
4. Захожу в УК, но там только сеть добавить комментарии, нет добавить обзоры. Может нужен специальный шаблон? (страница /rew есть, она пустая, но не выдает ошибку, значит есть).
Денис Васильевич 31 июля 2012 в 16:01 +1
small user social cms
а ведь так и есть, в архиве что Вы скачали, не хватает многих файлов. sad
видимо я собирал один архив а залил другой.
перезалил архив.
вот только Вам еще и префикс на свой придется менять во всех запросах к базе.
Man 31 июля 2012 в 18:12 0
small user social cms
Как раз последнюю неделю думал как сделать качественные «Отзывы» к каталогу отелей, да и еще с голосовалкой (советую/не советую).
Там только загрузить в корень и распаковать или еще что-то менять нужно?
Денис Васильевич 31 июля 2012 в 18:29 0
small user social cms
в содержании поста добавил пояснения. читайте.
Евгений Фоменко 29 мая 2013 в 23:27 0
small user social cms
"Эта статья понравилась" = это что, как, откуда? Я упустил = выручайте )))
Это фишка с 1.10? На 1.9 можно поставить?
Man 10 августа 2012 в 20:54 0
small user social cms
Такой нужный компонент и не работает.
Выдает ошибку:
Код PHP:
  1. Duplicate column name 'rew'
  2. ALTER TABLE `cms_uc_ratings` ADD
  3. (
  4. `rew` int(11) DEFAULT '0',
  5. `user_id` int(11) DEFAULT '0'
  6. );
Специально для этого сделал поддомен и установил нулевую 1.9, чтобы проверить сначала, а она не хочет работать.
Денис Васильевич 10 августа 2012 в 22:03 +1
small user social cms
перекачайте архив и повторите установку.
если будет ругаться на существующие таблицы то уберите из файла /components/rew/install.sql
строку:
Код PHP:
  1. INSERT INTO `cms_rating_targets` VALUES (id, 'rew', 'rew', 1, 2, 'cms_rew', 'Обзоры');
и при этом в начале файла не должно быть отступа.
Man 10 августа 2012 в 22:30 0
small user social cms
Да я уже нашел в чем проблема - запятая у вас отсутствовала и еще кое-что нужно было удалить и дописать.
В принципе сейчас все работает, спасибо!
Переделываю обзоры для отзывов по отелям.
Man 10 августа 2012 в 22:39 0
small user social cms
А где можно поменять адрес компонента rew, например на otzyvy ?
Чтобы вместо www.site/rew было www.site/otzyvy
Daniil 22 августа 2012 в 13:58 0
small user social cms
Не совсем понятно, как подключить это к магазину.
Добавил строки в
components/shop/frontend.php
components/shop/model.php
templates/_default_/com_ishop_item.tpl

Форма добавления на странице есть, но при добавлении выдает: Ошибка определения объекта! #3
googlebot 21 сентября 2012 в 14:20 0
small user social cms
во фронтенде компонента rew смотрите
Код PHP:
  1. $target_component = 'catalog';
, возможно где-то еще надо править.
Интересный компонент, хотя и излишне навороченный, надо бы попробовать к IMaps прикрутить.
Man 5 сентября 2012 в 13:19 0
small user social cms
У всех обзоров получилось одинаковое TITLE.
Автор! Как можно его уникализовать?
googlebot 21 сентября 2012 в 12:10 +1
small user social cms
Код PHP:
  1. if ($rew['user_id'] > 0) {$rew_author = $inUser->loadUser($rew['user_id']);}
  2. $inPage->setTitle('Обзор '.$rew['target_title'].' от '.$rew['guestname'].$rew_author['nickname']);
Вставить в фронтенд компонента перед
Код PHP:
  1. // Отдаем в шаблон
  2. $smarty = $inCore->initSmarty('components', 'com_rew.tpl');
Man 21 сентября 2012 в 13:06 0
small user social cms
Да, помогло! Спасибо! +++++
RooKee 1 ноября 2012 в 22:52 0
no profile
как получить дополение для instantshop ?
Boffka 17 ноября 2012 в 21:11 0
small user social cms
Для 1.10 Будет?
dimitri 28 ноября 2012 в 19:57 0
small user social cms
1. Можно ли чтобы оценка показывалась, как среднее от отзывов пользователей?
2. Можно ли прикрутить этот мод для 1.10 для УК?
Если есть уже готовое решение, пишите в личку - куплю
Anton 3 декабря 2012 в 21:23 0
small user social cms
Да. Было бы здорово для новенькой версии
Harconen 6 декабря 2012 в 18:53 0
small user social cms
а можно ли зделать обзор тавара я имею веду описание без голосования ?просто описание товар табами закладками например год выпуска патом из чево пастройн и проче