Просмотров профиля OSSN - PullRequest
0 голосов
/ 28 октября 2018

Привет всем. В настоящее время я пытаюсь создать компонент 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>&nbsp'. $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>&nbsp'. $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');

1 Ответ

0 голосов
/ 14 июля 2019

Атрибут может быть передан в функцию ossn_print

function who_viewed_my_profile_init() {
        if(ossn_isLoggedin()) {
            $count = ossn_get_relationships(array(
                'to' => ossn_loggedin_user()->guid,
                'type' => __who_view_profile_type__,
                'count' => true

               ));
               ........
               ........
                ossn_register_sections_menu('newsfeed', array(
                        'name' => 'profileviews',
                        'text' => ossn_print('profileviews', array($count)), 
                        ......

                ));

        }

}

Затем в файле языка:

<?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>%s</b>',
);

ossn_register_languages('en', $en);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...