Привет всем. В настоящее время я пытаюсь создать компонент OSSN, «Представления профиля», так как он показывает, какие пользователи просматривали ваш профиль.Я пытаюсь получить количество зрителей, которые просматривали вашу учетную запись, для отображения по ссылке на профили зрителей.Я ни в коем случае не беглый программист, но я выбрал код и нашел, что может быть полезно для отображения результата.
В компоненте для работы требуются два файла.Одним из них является регистрация языка.
<?php
/**
* Open Source Social Network
*
* @package (softlab24.com).ossn
* @author OSSN Core Team <info@softlab24.com>
* @copyright 2014-2017 SOFTLAB24 LIMITED
* @license General Public Licence http://www.opensource-socialnetwork.org/licence
* @link https://www.opensource-socialnetwork.org/
*/
$en = array(
'profileviews' => 'Profile Views:' . '<b> '. $count . '</b>',
);
ossn_register_languages('en', $en);
Другая функция передается системе.
<?php
/**
* Open Source Social Network
*
* @packageOpen Source Social Network
* @author Open Social Website Core Team <info@informatikon.com>
* @copyright 2014 iNFORMATIKON TECHNOLOGIES
* @license General Public Licence http://www.opensource-socialnetwork.org/licence
* @link http://www.opensource-socialnetwork.org/licence
*/
define("__who_view_profile_type__", 'profile:viewed');
function who_viewed_my_profile_init() {
if(ossn_isLoggedin()) {
ossn_register_callback('page', 'load:profile', 'who_viewed_my_profile', 'ossn_relationships');
ossn_register_page('profileviews', 'profileviews');
ossn_register_sections_menu('newsfeed', array(
'name' => 'profileviews' . '<b> '. $count . '</b>',
'text' => ossn_print('profileviews'),
'url' => ossn_site_url('profileviews'),
'parent' => 'links',
'icon' => true
));
}
}
function profileviews() {
$looks = ossn_get_relationships(array(
'to' => ossn_loggedin_user()->guid,
'type' => __who_view_profile_type__
));
$count = ossn_get_relationships(array(
'to' => ossn_loggedin_user()->guid,
'type' => __who_view_profile_type__,
'count' => true
));
if($looks) {
foreach($looks as $item) {
$user = ossn_user_by_guid($item->relation_from);
if($user) {
$users[] = $user;
}
}
}
$vars['users'] = $users;
$vars['icon_size'] = 'small';
$lists = "<div class='ossn-page-contents'>" . $count;
$lists .= "<p><strong>" . ossn_print('profileviews') . "</strong></p> ";
$lists .= ossn_plugin_view("output/users_list", $vars);
$lists .= ossn_view_pagination($count);
$lists .= "</div>";
$contents = array(
'content' => $lists
);
$content = ossn_set_page_layout('newsfeed', $contents, $count);
echo ossn_view_page($title, $content);
}
function who_viewed_my_profile() {
$profile = ossn_user_by_guid(ossn_get_page_owner_guid());
$user = ossn_loggedin_user();
if(!$profile || !$user) {
return false;
}
if(!ossn_relation_exists($profile->guid, $user->guid, __who_view_profile_type__)) {
ossn_add_relation($profile->guid, $user->guid, __who_view_profile_type__);
}
}
ossn_register_callback('ossn', 'init', 'who_viewed_my_profile_init');
Из того, что я могу сказать, функция function profileviews()
содержит то, что мне нужно для отображения количества просмотров.Этот массив учитывает, сколько пользователей просмотрело профиль.
$count = ossn_get_relationships(array(
'to' => ossn_loggedin_user()->guid,
'type' => __who_view_profile_type__,
'count' => true
));
Моя проблема - когда я пытаюсь вызвать функцию, у меня остается пустая домашняя страница.Тем не менее, он работает на странице реальных пользователей.На пустой странице нет ошибок.
"Произошла системная ошибка. Пожалуйста, повторите попытку позже. Вы можете отправить подробности этой ошибки системному администратору по адресу"
Возможно, я неправильно вызываю функцию?
ossn_register_callback('ossn', 'init', 'who_viewed_my_profile_init', 'profileviews');