0 Пользователей и 1 Гость просматривают эту тему.
  • 27 Ответов
  • 9448 Просмотров
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
И так есть у меня joomla 1.5 есть самая свежая версия jcomments
пишу свой компонент со всякими ajax функциями и прочего...
открыл инструкцию

Цитировать
Как показать комментарии для заданного объекта

Для этого необходимо подключить посредством функции include/require основной файл JComments и вызвать статический метод JComments::showComments. Этот метод поддерживает три обязательных параметра: ID объекта, имя компонента, и имя объекта.

  $comments = $mosConfig_absolute_path . '/components/com_jcomments/jcomments.php';
  if (file_exists($comments)) {
    require_once($comments);
    echo JComments::showComments($id, 'com_mycomp', $title);
  }

Где $id — это идентификатор комментируемого, com_mycomp — имя компонента и $title — имя объекта.
вставил в свой код данный кусок
заменив ($id, 'com_mycomp', $title)
на свои значения
Код
 $comments = $mosConfig_absolute_path . '/components/com_jcomments/jcomments.php';

эту строку пришлось заменить на
Код
 $comments = '/var/www/develop/j15/components/com_jcomments/jcomments.php';

В итоге результат такой

http://develop.vzletka.net/j15/index.php?option=com_makeup&task=show&id_product=1

Попытка оставить комментарий не проходит, комменты к новостям при этом работают на ура. не могу понять в чём косяк :(


*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Код комментариев вставляется в код страницы статично или посредством AJAX-запроса?
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
статично, но у меня подозрения что ajax между собой пересекается
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Да не думаю, дело в том, что выглядит это все так, как будто не инициализируется ни объект редактора комментариев, и не подключается файл стилей...
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Кажется проблема решилась...
в другой див запихал код комментариев
*

skrap

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
А каким образом сделать так, чтобы ссылка на комментарии и их количество отображалась только в случае, если комментарии для данной статьи не запрещены (например, отключено комментирование вообще, или для неавторизованных)? 
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну можно добавить вот такую проверку:

Код: php
require_once($mainframe->getCfg('absolute_path') . '/components/com_jcomments/jcomments.php');
$acl = & JCommentsFactory::getACL();
if ($acl->canComment()) {
// у пользователя есть право на комментирование
}
*

skrap

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Спасибо :) Все получилось
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
smart
хочу поле хомепейдж заменить на выпадающий список с заранее введёными значениями. грубо говоря посетители сайта могу выбрать хомепейдж себе из 3х предложенных.
это так понимаю всё в tpl_comment.php надо переделать в классы jcoomment лесть не надо?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Т.е. грубо говоря ты хочешь использовать поле homepage для каких-то других целей. Допустим там город или еще что-то? И чтобы пользователи просто выбирали значение из списка - так?

Если ты в это поле хочешь сохранять именно ссылки на сайты, то можно изменить только в шаблоне, в самом компоненте можно ничего не менять - значение этого поля по-прежнему будет сохраняться в базу и считываться с него. А вот если нужно сохранять текстовые данные - в компоненте надо убрать проверку на корректность ссылки. Замени в файле jcomments.ajax.php строчку:

Код: php
$comment->homepage = JCommentsText::url($values['homepage']);
на
Код: php
$comment->homepage = trim(strip_tags($values['homepage']));
*

skrap

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Ну можно добавить вот такую проверку:

А как проверить, разрешено ли комментирование этой статьи? Например, не стоит ли там {jcomments off} или комментарии этого раздела или категории не запрещены в настройках?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну на самом деле, на такой вопрос, вы легко могли бы найти ответ самостоятельно, изучив jcomments.content.php. Но раз уж вопрос задан... Есть вот вспомогательный класс JCommentsContentPluginHelper (/com_jcomments/helpers/contentplugin.php), у него есть несколько методов:

  • isEnabled
  • isDisabled
  • isLocked
  • checkCategory

Все методы данного класса прокомментированы, параметры описаны. Так что посмотрите, и, я думаю, все станет понятно. Обращаю ваше внимание, что большинство функций и классов имеют описание в комментариях.
*

skrap

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Smart,
Спасибо за ответ :)

Дело в том, что я последний раз активно занимался программированием еще тогда, когда ООП было чем-то новым, а c PHP последний раз плотно сталкивался, когда появилась 3 версия...
Никак у меня не получается сделать, чтобы ссылка на комментарии появлялась, только если комментирование конкретной статьи возможно и пользователь имеет право комментировать.
Буду разбираться :) 
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
у меня проблема вот такая:
Интеграцию делал по вашему руководсву
но в результате получил вот такое

Хотя в вызове подставляю и ид и имя материала.

далее используемый код и результат его работы
Цитировать
<?php

$comments = '/www/makeupli/www/htdocs/components/com_jcomments/jcomments.php';
  if (file_exists($comments)) {
      require_once($comments);
echo $this->data->id_pro.'com_makeup'.$this->data->name;
          echo JComments::showComments($this->data->id_pro,'com_makeup',$this->data->name);
       }
?>


нужно оно мне в выборке последних комментариев

чтоб они были кликабельны, в настройках указал чтоб выводились заголовки материала
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Вот, и тут мы дошли до самого главного в интеграции - до плагина. Пока для данного компонента не будет плагина - не будет ни заголовков, ни корректных ссылок. Почитайте внимательно вот тут: Создание плагина для JComments.
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
а жесть а я ползаю по структуре БД пытаюсь найти таблицу соответвсия где мой ИД соотносится с ИД коммента и от этой связки выдирается имя обьекта. :)
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Учитывая тот факт, что названия объектов могут меняться (впрочем как и ссылки на них - например установили новый SEF или пункт меню добавили), я посчитал неэффективным хранение статичной информации об этом в комментариях и возложил функцию получения данной информации на плагины.
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
smart
только я немного логику потерял :(

вот есть код

Код
function getObjectOwner( $id ) {
   
    $db = & JCommentsFactory::getDBO();
    $db->setQuery( "SELECT created_by FROM #__mycomp WHERE id='$id'");
    return $db->loadResult();
  }

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

или я чего-то не правильно понимаю?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Вопрос в том "чей овнер"
я предположил, что овнер коммента. но логично его брать из таблицы комментов по ид коммента овер основого сообщения, а нужен ли он?
Ну если метод называется getObjectOwner, то можно предположить, что он возвращает владельца объекта. А для каких объектов существует тот или иной плагин? Ну конечно для комментируемых...

Если бы он возвращал идентификатор автора комментария, то метод бы назывался getCommentOwner... но в таком случае, зачем его засовывать в плагин?

Еще раз, в документации по созданию плагинов написано:

Цитировать
Плагины используются компонентом для получения информации о комментируемом объекте (имя объекта или прямая ссылка). Это необходимо потому, что сам компонент комментариев ничего не знает о комментируемых объектах и о их структуре данных. Поэтому, такие задачи, как построение ссылки на объект и получение его названия возлагаются на разработчика расширения.

А следовательно, данные плагины работают с комментируемыми объектами, а не с комментариями.

овер основого сообщения, а нужен ли он?
Не сообщения, а комментируемого объекта (статьи, файла, картинки в галерее). Данная функция позволяет определить кто автор комментируемого объекта. Зачем? Ну например, чтобы автоматически его подписать на комментарии. Или чтобы в списке комментариев к материалу комментарии автора выделялись цветов. Вариантов использования может быть множество.
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Цитировать
Если бы он возвращал идентификатор автора комментария, то метод бы назывался getCommentOwner... но в таком случае, зачем его засовывать в плагин?
Это меня и натолкнуло что ("овнера обьекта"= овенера материала) (не точно выразился)= владелец коментируемого объекта.
но если владелец у меня всегда админ, и вообще не важно пользователю знать кто овнер объекта. ну это в моем варианте.

могу либо задать постоянного овнера, либо не вызывать данную функцию вообще?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
но если владелец у меня всегда админ, и вообще не важно пользователю знать кто овнер объекта. ну это в моем варианте.
если в вашем компоненте владелец всех комментируемых объектов всегда один пользователь (администратор) вы можете просто не реализовывать данную функцию в плагине. Так как любой плагин является наследником от JCommentsPlugin где присутствует базовая реализация данного метода, возвращающая по умолчанию -1.
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
ага сработало :) как расплатятся на пиво переведу вам :)

и ещё ошибочка у вас на сайте

class jc_com_mycomp extends JCommentsPlugin {
 
  function getObjectTitle( $id ) {
   
    $db = & JCommentsFactory::getDBO();
    // Загрузка из базы данных имени по заданному id
    $db->setQuery( "SELECT title FROM #__mycomp WHERE id='$id'");
    return $database$db->loadResult();
  }
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
и ещё ошибочка у вас на сайте
угу, спасибо, исправил
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
блин насколько приятно использовать продукты, а не "поделки".
просто кайф. Спасибо большое ,человеческое за качественный продукт.
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
ещё у меня вопрос, надо мне расширить набор полей комментируемого объекта.
как мне это красивее сделать.
тоесть добавить ещё пару полей не важного какого типа. хоть чекбокс хоть поле ввода.

второй вопрос.
хочу в модуле последних комментариев добавить ещё одно поле для вывода что присутствует в самописном компоненте.

Заранее спасибо :)

*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
ещё у меня вопрос, надо мне расширить набор полей комментируемого объекта.
комментируемый объект это то, что комментируется... Т.е. объекты вашего компонента - и тут компонент комментариев не при чем. Если вы имеете в виду "объект комментария", подразумевая под этим сам комментарий, то это совсем другая история - на форуме точно было описание, как добавить поле title.

хочу в модуле последних комментариев добавить ещё одно поле для вывода что присутствует в самописном компоненте.
добавляйте, кто ж запрещает-то? откорректируйте запросы к БД, которые выбирают комментарии и выберите дополнительную информацию из таблиц вашего компонента...
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Цитировать
комментируемый объект это то, что комментируется...
ну разумеется снова не правильно выразился..
спасибо попробую поискать.
*

Saber

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Пока наткнулся на одну тему
http://joomlaforum.ru/index.php/topic,39240.0.html
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Интеграция с Community Builder

Автор Opposite

Ответов: 77
Просмотров: 62600
Последний ответ 20.09.2022, 11:22:26
от Vlad1
Интеграция JComments с SP Page Builder

Автор Proaqua

Ответов: 5
Просмотров: 2837
Последний ответ 14.06.2020, 11:53:38
от xpank
Интеграция с SP LMS

Автор valensy

Ответов: 11
Просмотров: 1204
Последний ответ 02.03.2020, 12:50:40
от shamangor
Интеграция JComments в JoomShoping

Автор apelsin

Ответов: 20
Просмотров: 8670
Последний ответ 27.12.2019, 22:39:08
от dron
Интеграция JComments с K2

Автор Sulpher

Ответов: 276
Просмотров: 113181
Последний ответ 31.07.2019, 11:05:39
от wishlight