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

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Проблема: в шаблон сайта надо вставить разметку специально для JComments. То есть если JComments  присутствуют, то разметка появляется, а если не присутствуют - не появляется.

Вопрос: какое условие надо вставить в шаблон, чтобы такое случалось? If... и дальше..?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Проверка присутствия JComments
« Ответ #1 : 07.05.2013, 13:56:50 »
Что именно необходимо узнать - есть ли вообще на сайте JComments?
*

rixter

  • Захожу иногда
  • 93
  • 9 / 0
  • Кто юзал мой писи?
Re: Проверка присутствия JComments
« Ответ #2 : 07.05.2013, 15:50:21 »
*

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Re: Проверка присутствия JComments
« Ответ #3 : 07.05.2013, 17:17:06 »
Что именно необходимо узнать - есть ли вообще на сайте JComments?

Необходимо узнать не только установлен этот компонент, но и что он включён.
Проверка наличия файла, как указано на JoomlaTune.com
Код
$comments = JPATH_SITE . '/components/com_jcomments/jcomments.php';
  if (file_exists($comments))
не совсем устраивает, т.к. компонент может быть установлен, но отключён.

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

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Проверка присутствия JComments
« Ответ #4 : 07.05.2013, 17:37:38 »
А как изначально стоит вопрос-то? В принципе когда компонент вызывается, он объявляет константу JCOMMENTS_SHOW. А так, как шаблон вызывается уже после, то можно проверять по факту - был ли вызов JComments или нет.
*

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Re: Проверка присутствия JComments
« Ответ #5 : 09.05.2013, 07:57:52 »
А как изначально стоит вопрос-то?
С самого начала что ли? Ну давайте с самого начала.

Итак, имеем такой дизайн:

Это WordPress-совский шаблон, его надо повторить для Joomla.
Проблема в том, что число комментариев выводится в таком неудобном месте. В WordPress-е вывести число комментариев легко практически в любом месте, там комментарии часть основного API. С шаблоном для Joomla проблема в том, что имя автора материала и число комментариев находятся внутри одного графического элемента - серой полоски. Вывести только число комментариев, без readmore, у меня никак не получается.

Что хочется, так это отдельное событие (не знаю как это по-русски, event), по которому бы выводилось только число комментариев. Понятно, что это событие должно быть от jComments.

Тогда я бы мог сделать достаточно простую верстку, типа:
Код
<div class=grey_bar>
<div class="createdby">
<?php $author =  $this->item->author; ?>
</div>
<div class="comments_number">
<?php echo $this->item->event->JCommentsNumberEvent; ?>
</div>
</div>

Можно было бы добавить к этой верстке проверку условия на наличие JComments, или включать этот кусок через настройки вручную - не принципиально. Загвоздка в том, что я не знаю есть ли такое событие и, если есть, как его правильно использовать.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Проверка присутствия JComments
« Ответ #6 : 10.05.2013, 22:28:00 »
Что хочется, так это отдельное событие (не знаю как это по-русски, event), по которому бы выводилось только число комментариев. Понятно, что это событие должно быть от jComments.
Такое событие в принципе есть:

Код: php
dispatcher	=& JDispatcher::getInstance();
$dispatcher->trigger('onJCommentsCount', array($id, 'com_mycomponent'));
где $id это идентификатор комментируемого объекта, а 'com_mycomponent' соотв. имя компонента.
*

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Re: Проверка присутствия JComments
« Ответ #7 : 11.05.2013, 07:34:27 »
Я нашёл аж 24 этих самых триггеров, но onJCommentsCount среди них не наблюдаю.
Он в каком файле определён?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Проверка присутствия JComments
« Ответ #8 : 11.05.2013, 10:53:11 »
Это событие определено в системном плагине (JComments - System).
*

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Re: Проверка присутствия JComments
« Ответ #9 : 15.05.2013, 03:53:06 »
Ну, вопщем, если кому понадобиться, то работает такая штуковина:
Код
<?php
echo JText::_('TPL_WARP_COMMENTS') ;
$commentscount = plgSystemJComments::onJCommentsCount($this->item->id, 'com_content') ;
echo $commentscount;
?>

Понятно, что в настройках плагина Материалы - Комментарии следует скрывать ссылку «Комментарии», чтобы один и тотже счётчик два раза не показывать.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Проверка присутствия JComments
« Ответ #10 : 15.05.2013, 11:03:09 »
Ну, вопщем, если кому понадобиться, то работает такая штуковина:
Не совсем корректно, правильнее использовать JDispatcher, как я писал ранее. Так как в этом случае, не нужно проверять, загружен ли плагин, и в случае, если JComments вообще нет на сайте, никакой ошибки не возникнет.
*

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Re: Проверка присутствия JComments
« Ответ #11 : 19.05.2013, 14:49:08 »
... правильнее использовать JDispatcher, ...
А у меня через него почему-то сразу не получалось, так я в обход пошёл.  ;D
У меня вообще трудности с ООП, да.

Итак, корректный вариант через диспетчера:
Код
<?php
echo JText::_('TPL_WARP_COMMENTS') ;
$dispatcher =& JDispatcher::getInstance();
$dispatcher->trigger('onJCommentsCount', array($this->item->id, 'com_content'));
?>

Понятно, что к языковым константам в данном случае необходимо добавить нечто вроде
Код
TPL_WARP_COMMENTS="Comments:&nbsp;"

Большое спасибо за помощь, Сергей.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вышла новая версия JComments Fork 4.0.16

Автор ProtectYourSite

Ответов: 79
Просмотров: 9972
Последний ответ 05.02.2024, 23:50:16
от ProtectYourSite
У Jcomments есть аналоги?

Автор ruslan13

Ответов: 10
Просмотров: 2247
Последний ответ 07.12.2023, 20:08:31
от Missile
JComments 3.0.7 в Joomla 3.10.12

Автор rezchik

Ответов: 2
Просмотров: 785
Последний ответ 05.10.2023, 21:44:08
от rezchik
JComments 3.0.7 в Joomla 3.10.12

Автор rezchik

Ответов: 1
Просмотров: 670
Последний ответ 02.10.2023, 22:24:45
от sivers
Модуль JComments Latest

Автор smart

Ответов: 574
Просмотров: 333093
Последний ответ 05.07.2023, 16:42:32
от sertlan