Новости Joomla

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

hapson

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Здравствуйте.
Столкнулся с таким недоразумением... В настройках EB выставлено брать аватар с компонента CommunityBuilder. Этот же аватар является ссылкой на профиль CB. Но ссылка немного не такая, какой она должна быть.

Если в CB не делать пункт меню, который будет ссылаться на профиль юзера, то линк на профиль выглядит так:
http://site.ru/component/comprofiler/userprofile/имя_юзера
Если сделать пункт меню, как это настоятельно рекомендуется, то линк на профиль принимает вид:
http://site.ru/profile/userprofile/имя_юзера (пункт меню имеет алиас profile).

Однако в записях EasyBlog аватар все равно имеет ссылку http://site.ru/component/comprofiler/userprofile/имя_юзера
То есть в EasyBlog где-то забит стандартный путь на профиль юзера CB и ему не интересны мои пункты меню.

Вот в файле /components/com_easyblog/classes/avatar.php я нашел кусок кода

Код
class EasyBlogAvatarCommunityBuilder
{
function _init()
{
$files = JPATH_ROOT . DIRECTORY_SEPARATOR . 'administrator' . DIRECTORY_SEPARATOR . 'components'  . DIRECTORY_SEPARATOR .  'com_comprofiler'  . DIRECTORY_SEPARATOR .  'plugin.foundation.php';

if(!JFile::exists( $files ))
{
return false;
}

require_once( $files );
cbimport('cb.database');
cbimport('cb.tables');
cbimport('cb.tabs');

return true;
}

function _getAvatar($profile)
{
$user = CBuser::getInstance( $profile->id );

// @task: Apply guest avatars when necessary.
if( !$profile->id )
{
$avatar = new stdClass();
$avatar->link = selectTemplate(). 'images/avatar/tnnophoto_n.png';

return $avatar;
}

if (!$user)
{
$user = CBuser::getInstance( null );
}

// Prevent CB from adding anything to the page.
ob_start();
$source = $user->getField( 'avatar' , null , 'php' );
$reset = ob_get_contents();
ob_end_clean();
unset( $reset );

$source = $source[ 'avatar' ];

//incase we view from backend. we need to remove the /administrator/ from the path.
$source = str_replace('/administrator/','/', $source);

$avatar = new stdClass();
$avatar->link = $source;

return $avatar;
}
}

PHP начал изучать три дня назад, но тут что-то ничего не понимаю. Или в этом куске берется только аватар, но не линк на профиль? Подскажите, где в EasyBlog поправить это дело. Чтобы вместо component/comprofiler/userprofile/ сделать profile/userprofile
*

AlexSmirnov

  • Завсегдатай
  • 1862
  • 272 / 16
  • Ищите и найдете
Приветствую, Владимир.

Я бы порекомендовал не заниматься изменением кода: как только Вы сам лично или на заказ выполните решение данной проблемы какой-либо задачи в СВ или ЕВ на уровне кода, то Вы тут же рискуете со временем именно из-за этого хака натолкнуться на новые проблемы. Кроме того, всегда есть вероятность что кто-то уже столкнулся с этой же самой проблемой и над ней уже работают и сами разработчики.

Насчет создания пункта меню: поиграюсь до выходных с Вашей СВ/ЕВ интеграцией и отпишусь.

# Back the fufalo (особенно ту самую столкершу)! #
# ВАЖНО! Кайфую от удаления присланного в личку спама, почти как от любви (особенно по выходным). #
*

hapson

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Приветствую, Владимир.

Я бы порекомендовал не заниматься изменением кода: как только Вы сам лично или на заказ выполните решение данной проблемы какой-либо задачи в СВ или ЕВ на уровне кода, то Вы тут же рискуете со временем именно из-за этого хака натолкнуться на новые проблемы. Кроме того, всегда есть вероятность что кто-то уже столкнулся с этой же самой проблемой и над ней уже работают и сами разработчики.

Насчет создания пункта меню: поиграюсь до выходных с Вашей СВ/ЕВ интеграцией и отпишусь.


Приветствую!

Без правки кода мне обойтись не удастся в любом случае, поэтому и начал учить php. На компонентах в их стандартном виде и функционале мне не достичь желаемой цели. Конечно, не хочется что-то править, когда сам слабо (или вообще) не понимаешь, что делаешь.

Кстати в файле /components/com_easyblog/themes/default/blog.avatar.php вот что, видимо это и есть линк на профиль CB
Код
<?php
defined('_JEXEC') or die('Restricted access');
?>
<!-- Avatar wrappers -->
<div class="blog-avatar float-l prel" itemscope itemtype="http://schema.org/Person" itemprop="author">
<?php if( isset( $row->team_id ) ){ ?>
<?php
$teamBlog   = EasyBlogHelper::getTable( 'TeamBlog', 'Table');
$teamBlog->load( $row->team_id );
?>
<!-- Team avatars -->
<a href="<?php echo EasyBlogRouter::_('index.php?option=com_easyblog&view=teamblog&layout=listings&id=' . $teamBlog->id ); ?>" class="avatar isTeamBlog float-l prel">
<img src="<?php echo $teamBlog->getAvatar(); ?>" alt="<?php echo $teamBlog->title; ?>" class="avatar" style="width:60px !important; height:60px !important;" width="60" height="60" />
</a>
<a href="<?php echo $row->blogger->getProfileLink(); ?>" class="avatar isBlogger float-l pabs">
<img src="<?php echo $row->blogger->getAvatar(); ?>" alt="<?php echo $this->escape( $row->blogger->getName() ); ?>" itemprop="image" style="width:30px !important; height:30px !important;" class="avatar" width="30" height="30" />
</a>
<?php } else { ?>
<a href="<?php echo $row->blogger->getProfileLink(); ?>" class="avatar float-l">
<img src="<?php echo $row->blogger->getAvatar(); ?>" alt="<?php echo $this->escape( $row->blogger->getName() ); ?>" class="avatar isBlogger" width="60" height="60" itemprop="image" />
</a>
<?php } ?>
</div>

PS последняя ссылка (после else) - ссылка на профиль стороннего компонента. Но это видимо не совсем то, что нужно.
« Последнее редактирование: 16.05.2013, 21:48:09 от hapson »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Профиль пользователя

Автор gromoklod

Ответов: 5
Просмотров: 1669
Последний ответ 04.03.2014, 12:31:43
от AlexSmirnov
Аватар из CommunityBuilder

Автор RomanovVlad

Ответов: 2
Просмотров: 2144
Последний ответ 31.01.2014, 09:14:34
от Ariy84