Коментарии в компоненте

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 31 января 2012 в 16:16
Здравствуйте вернулся я обратно со своим вопросом по коментами.
Использовал вашу структуру как написано в документации.
Но коментарии не показываются :(

Помогите решите проблему, все 3 шага сделал.

Спасибо за ранее.
#2 31 января 2012 в 19:53
  1. public function getCommentTarget($target, $target_id){ }
Этот пункт точно правильно сделали???
Например для моего компонента музыки она выглядет так:
  1. public function getCommentTarget($target, $target_id) {
  2. $sql = "SELECT name, seolink FROM cms_music WHERE id = '{$target_id}'";
  3. $result = $this->inDB->query($sql);
  4. $music = $this->inDB->fetch_assoc($result);
  5. $musics = array();
  6. $musics['link'] = '/music/'.$music['seolink'];
  7. $musics['title'] = $music['name'];
  8. return $musics;
  9. }
#3 31 января 2012 в 22:22
Кстати тоже сейчас пишу компонент, нужно организовать комментарии в нем… есть какие-то статьи или описания как лучше это реализовать?
#4 31 января 2012 в 22:49
1. Инсталлер компонента
  1.  
  2. // проверяем не создавали ли мы ранее
  3. $is_comment_target = $inDB->get_field('cms_comment_targets', "target = 'target_name'", 'id');
  4. if(!$is_comment_target){
  5. $inCore->registerCommentsTarget('target_name', 'линк_компонента', 'Видеоролики');
  6. }
2. Модель компонента (файл model.php)
  1.  
  2. public function getCommentTarget($target, $target_id) {
  3.  
  4. $result = array();
  5.  
  6. switch($target){
  7.  
  8. case 'target_name':
  9. // здесь код, который получает и формирует ссылку на комментарий
  10. $result['link'] = 'какая-то сформированная вами ссылка';
  11. $result['title'] = 'название того, что комментируем';
  12. break;
  13.  
  14. }
  15.  
  16. return ($result ? $result : false);
  17.  
  18. }
  1.  
  2. // необязательный метод
  3. public function getVisibility($target, $target_id) {
  4.  
  5. $is_hidden = 0;
  6. switch($target){
  7. case 'target_name':
  8. // здесь формируется видимость комментария
  9. // и формируется переменная возвращающая будет ли комментарий виден или нет, например в модуле
  10. break;
  11. }
  12.  
  13. return $is_hidden;
  14.  
  15. }
  16.  
3. Вывод комментариев
— в php коде:
  1.  
  2. if($inCore->isComponentInstalled('comments')){
  3. $inCore->includeComments();
  4. // $id записи, которую комментируем
  5. // в модели в методе getCommentTarget она же $target_id
  6. comments('target_name', $id);
  7. }
— или в шаблоне с марти
  1. {comments target='target_name' target_id=$item.id}
Считаем что target_name это некое название назначения комментируемого материала.
#5 31 января 2012 в 23:43
Fuze, спасибо большое!
#6 1 февраля 2012 в 11:34
DagStudent, Fuze, Спасибо вам большое. Моя ошибка была в том что я не передавал id темы где должны быть комментарии :)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.