Kunena заменяем ссылку на профиль пользователя
Всем привет, снова снова кунена, получил задание на допиливание популярного форума Kunena, сегодня потребовалось поменять ссылку на профиль пользователя. Это связано с тем, что на сайте стоит социальный компонент и вся информация, управление, скатывается на него. В нашем случаии получается, то что у пользователей получилось два пути менять информацию, что не удобно, особенно если учесть об привычки пользователей жать на ник под аваторкой и на сам аватар.
Первое что пришло вголову это простой редирект с вьюшки страницы пользователя, но вариант отвалиллся так как ники показываются везде, поэтому заходим в файл по пути:
administrator/components/com_kunena/libraries/user/user.php
Находим строки с таким содержанием:
public function getName($visitorname = '', $escape = true) {
if (! $this->userid && !$this->name) {
$name = $visitorname;
} else {
$name = $this->_config->username ? $this->username : $this->name;
}
if ($escape) $name = htmlspecialchars($name, ENT_COMPAT, 'UTF-8');
return $name;
}
если мы закоментируем строку $name = $this->_config->username ? $this->username : $this->name;, то на формуе полностью пропадут ники пользователей, значит капать будем в этом направлении.
И так определяем где эта функция задействована, понятно что она выводит только ник без сылки, спускаемся ниже и видим функцию:
public function getLink($name = null, $title = null, $rel = 'nofollow') {
if (!$name) {
$name = $this->getName();
}
$key = "{$name}.{$title}.{$rel}";
if (empty($this->_link[$key])) {
if (!$title) {
$title = JText::sprintf('COM_KUNENA_VIEW_USER_LINK_TITLE', $this->getName());
}
$uclass = $this->getType(0, 'class');
$link = $this->getURL ();
if (! empty ( $link ))
$this->_link[$key] = "<a class=\"{$uclass}\" href=\"{$link}\" title=\"{$title}\" rel=\"{$rel}\">{$name}</a>";
else
$this->_link[$key] = "<span class=\"{$uclass}\">{$name}</span>";
}
return $this->_link[$key];
}
О да вот это еще горячее, строка $this->_link[$key] = "<a class=\"{$uclass}\" href=\"{$link}\" title=\"{$title}\" rel=\"{$rel}\">{$name}</a>";
явно генерирует ссылку.
В моем задании сделать ссылку вот токого вида:
'index.php?option=com_flyclub&view=user_flyclub&id=' . $user->id_user . ':' . $user->username
посути нечего сложного и возможно заменим сам код все заработает, пробуем и смотрим.
if (empty($this->_link[$key])) {
if (!$title) {
$title = JText::sprintf('COM_KUNENA_VIEW_USER_LINK_TITLE', $this->getName());
}
$uclass = $this->getType(0, 'class');
$link = "index.php?option=com_flyclub&view=user_flyclub&id=" . $this->userid ."";//;$this->getURL ();
if (! empty ( $link ))
$this->_link[$key]="<a class=\"{$uclass}\" href=\"{$link}\" title=\"{$title}\" rel=\"{$rel}\" >{$name}</a>";
else
$this->_link[$key] = "<span class=\"{$uclass}\">{$name}</span>";
}
выдало нам такую картину, покажу в html код
<li class="kpost-username">
Kunena заменяем ссылку на профиль пользователя - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.