12:21 13.05.2018
В phpFox имеется возможность отображать в ленте новостей канал нового комментария, для этого достаточно включить в настройках модуля "Feed": Канал нового комментария (url настроек: "admincp/setting/edit/module-id_feed/"). Теперь все новые комментарии будут отображены в виде отдельного канала. Заметил, что комментарии ссылок, что созданы непосредственно в ленте новостей, не выводятся, как отдельные каналы, кроме того, в таблице "feed" не создается запись о новом комменте. Мне показалось, что это неправильно и я решил это исправить. Сейчас расскажу, как это сделать.
Значит, открываем: "module/link/include/service/callback.class.php", находим:
Выше добавляем:
Теперь при комментировании ссылок в таблицу "feed" будет добавлена запись.
В этом же файле необходимо добавить функцию getActivityFeedComment:
Затем, в админке, необходимо добавить две новые фразы в модуль "link":
-
-
Готово. Теперь канал комментария ссылок должны отображаться в ленте новостей (стена). Пример:
Возможно будет интересно:
- Канал комментария статуса в ленте новостей (phpFox: feed)
Значит, открываем: "module/link/include/service/callback.class.php", находим:
// Update the post counter if its not a comment put under moderation or if the person posting the comment is the owner of the item.
if (empty($aVals['parent_id']))
{
$this->database()->updateCounter('link', 'total_comment', 'link_id', $aRow['link_id']);
}
Выше добавляем:
$privacy = 0;
$privacyComment = 0;
if (Phpfox::getParam('feed.add_feed_for_comments'))
{
$privacy = $aVals['privacy'];
$privacyComment = $aVals['privacy_comment'];
}
(Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->add($aVals['type'] . '_comment', $aVals['comment_id'], $privacy, $privacyComment) : null);
Теперь при комментировании ссылок в таблицу "feed" будет добавлена запись.
В этом же файле необходимо добавить функцию getActivityFeedComment:
public function getActivityFeedComment($row)
{
if (Phpfox::isUser() && Phpfox::isModule('like'))
{
$this->database()
->select('l.like_id AS is_liked, ')
->leftJoin(Phpfox::getT('like'), 'l', 'l.type_id = \'feed_mini\' AND l.item_id = c.comment_id AND l.user_id = ' . Phpfox::getUserId());
}
$item = $this->database()
->select('link.link_id, link.title, link.total_like, link.user_id, link.status_info, c.total_like, c.text, ' . Phpfox::getUserField())
->from(Phpfox::getT('comment'), 'c')
->join(Phpfox::getT('link'), 'link', 'link.link_id = c.item_id')
->join(Phpfox::getT('user'), 'u', 'u.user_id = link.user_id')
->where('c.comment_id = ' . (int) $row['item_id'])
->execute('getSlaveRow');
if (empty($item['link_id']))
{
return false;
}
if ($row['user_id'] == $item['user_id'])
{
$message = Phpfox::getPhrase('link.add_comment_link_own', array('gender' => $item['gender']));
}
else
{
$user = '<a href="' . Phpfox::getLib('url')->makeUrl($item['user_name']) . '">' . $item['full_name'] . '</a>';
$message = Phpfox::getPhrase('link.add_comment_link_user_name', array('gender' => $row['gender'], 'user_name' => $user));
}
return array(
'feed_title' => $item['title'],
'feed_content' => !empty($item['status_info']) ? $item['status_info'] : null,
'feed_info' => $message,
'feed_link' => Phpfox::permalink($item['user_name'], 'link-id_' . $item['link_id']),
'feed_status' => $item['text'],
'feed_total_like' => $item['total_like'],
'feed_is_liked' => isset($item['is_liked']) ? $item['is_liked'] : false,
'feed_icon' => Phpfox::getLib('image.helper')->display(array('theme' => 'module/link.png', 'return_url' => true)),
'time_stamp' => $row['time_stamp'],
'like_type_id' => 'feed_mini'
);
}
Затем, в админке, необходимо добавить две новые фразы в модуль "link":
-
add_comment_link_own
- прокомментировал(а) свою ссылку.-
add_comment_link_user_name
- прокомментировал(а) ссылку от {user_name}.Готово. Теперь канал комментария ссылок должны отображаться в ленте новостей (стена). Пример:
Возможно будет интересно:
- Канал комментария статуса в ленте новостей (phpFox: feed)
- Жалоба