Сейчас на сайте

Всего на сайте:
  • 81 гостей
Последними зарегистрировались:

Дни рождения

  • Вчера smisp Послать ЛС было 59 лет




Правильный выбор доменного имениприносит успех в парковке доменаКомпонент зависимых выпадающих списков для Joomla 2.5 ZavispisКомпонент Matukio - русификация
Настройка форума Kunena 1.7.1 - добавление социальных кнопок в профиль PDF Печать E-mail
(8 голоса, среднее 4.13 из 5)
Автор: Slim888   
26.01.2012 12:30

Настройка Kunena - социальные кнопки в профилеПосле установки на сайт последней версии компонента форума Kunena 1.7.1 мы видим, наряду со всеми его плюсами, один маленький минус. В профиле пользователя нет возможности изменить, добавить или убрать иконки социальных кнопок. Нигде в настройках этого нет. Придется самостоятельно настроить Kunena руками.

Настройка Kunena

Я буду объяснять на примере конкретной кнопки – так вам будет проще понять, что к чему. Возьмем за основу Мой Мир mailа, так как это сложнее всего реализовать. Дело в том, что в большинстве соцсетей идентификатор пользователя – это его id. Здесь же идет подразделение на домен почты, потом уже имя (напимер http://my.mail.ru/mail/Aleksei/ или http://my.mail.ru/inbox/Slim888). То есть надо донести до пользователя, что он должен ввести оба эти значения (mail/Aleksei или inbox/Slim888).

Начинаем изменять Kunena 1.7.1

Первое, с чего нужно начать – добавить в таблицу пользователей Kunena новое поле, в котором будут храниться данные пользователей для попадания на их страницу в соцсети.

Выполним sql-запрос:

ALTER TABLE jos_kunena_users ADD COLUMN MOIMIR varchar(50)

Мы рассматриваем вариант с префиксом таблицы (jos_) по умолчанию. У вас он может отличаться. varchar(50) указывает, что в поле будет не более 50 символов, чего вполне достаточно.

Добавляем картинки социальных кнопок Kunena

Когда пользователь заходит в профиль к участнику форума, он видит активные или нет иконки. Нам нужно добавить 2 картинки Мой Мир – белую и цветную к остальным. Хранятся картинки в 1 файле, который находится тут:

components/com_kunena/template/default/media/iconsets/profile/default/default.png

Это длинная полоска, в конец которой и нужно добавить иконки. Если вы не хотите переделывать кучу кода, то добавьте именно в самый низ 2 наши картинки. Важно, чтобы отступы между картинками были по 5 пикселей, а размер 16*16px.

Почему это делается именно так? Потому что кнопки "нарезаются из файла" при помощи css.

Открываем для редактирования файл

components/com_kunena/template/default/css/kunena.forum-min.css

Файл сжат для быстродействия – его копия с нормальным оформлением в файле

components/com_kunena/template/default/css/kunena.forum.css

Но рабочий именно первый css.

Итак, тут мы можем произвести настройку профиля kunena:

#Kunena .kicon-profile { 
	background-repeat: no-repeat;
	width: 16px;
	height: 16px;
	display: inline-block;
	vertical-align: text-top;
	margin-right: 3px;
	background-image: url(../media/iconsets/profile/default/default.png);
}

Указывается ширина, высота иконок, отступ между ними 3px и файл, из которого берется "фон" элемента. Это та самая полоска, к которой мы подрисовали наши 2 кнопочки.

#Kunena .kicon-profile-aim 		{ background-position: 0 0; } 
#Kunena .kicon-profile-bebo 		{ background-position: 0 -21px; } 
#Kunena .kicon-profile-birthdate 	{ background-position: 0 -42px; } 
#Kunena .kicon-profile-blogspot 	{ background-position: 0 -63px; } 
#Kunena .kicon-profile-delicious 	{ background-position: 0 -84px; } 
#Kunena .kicon-profile-digg 		{ background-position: 0 -105px; } 
#Kunena .kicon-profile-email		{ background-position: 0 -126px; } 
	< . . . >  
#Kunena .kicon-profile-twitter-off 	{ background-position: 0 -941px; } 
#Kunena .kicon-profile-website-off 	{ background-position: 0 -962px; } 
#Kunena .kicon-profile-yim-off 		{ background-position: 0 -983px; }

Эти блоки занимаются нарезкой. Для каждой кнопки прописано место, с которого начинается "фон". Отсчет ведется с верха картинки. Так как высота у нас фиксированная, то отрезается ровно 16px. Еще 5px отводится на расстояние между элементами.

Пропишем 2 строки:

#Kunena .kicon-profile-moimir 		{ background-position: 0 -1004px; }
#Kunena .kicon-profile-moimir-off 	{ background-position: 0 -1025px; }

 Добавляем в профиль Kunena 1.7.1 поля

Следующий файл, который нам нужен, отвечает за страничку изменения своих данных в профиле пользователем:

components/com_kunena/template/default/profile/editprofile.php

Почти на весь документ расположена таблица – та самая, которую человек видит во вкладке "профиль", когда редактирует свои данные. Допустим, мы хотим, чтобы поле Мой Мир располагалось между "URL сайта" и "Твиттером".

После строки

<tr class="krow1">
    <td class="kcol-first">
<?php echo JText::_('COM_KUNENA_MYPROFILE_WEBSITE_URL'); ?></td>
    <td class="kcol-mid">
<span class="editlinktip hasTip" title="<?php echo JText::_('COM_KUNENA_MYPROFILE_WEBSITE_URL'); ?>::<?php echo JText::_('COM_KUNENA_MYPROFILE_WEBSITE_URL_DESC'); ?>" >
        <input type="text" name="websiteurl" value="<?php echo $this->escape($this->profile->websiteurl); ?>" />
        </span>
    </td>
</tr>

Вставляем наши данные:

<tr class="krow2">
    <td class="kcol-first">
<?php echo JText::_('COM_KUNENA_MYPROFILE_MOIMIR'); ?></td>
    <td class="kcol-mid">
<span class="editlinktip hasTip" title="<?php echo JText::_('COM_KUNENA_MYPROFILE_MOIMIR'); ?>::<?php echo JText::_('COM_KUNENA_MYPROFILE_MOIMIR_DESC'); ?>" >
        <input type="text" name="moimir" value="<?php echo $this->escape($this->profile->MOIMIR); ?>" />
        </span>
    </td>
</tr>

Многое зависит от того, сколько полей профиля Kunena вы хотите добавить. Класс строки krow2 чередуется с krow1. Если у вас четное количество, то просто проверяете, чтобы чередование не сбилось. Если нечетное, то до конца таблицы меняете цифры класса, чтобы все встало на свои места.

Строки

'COM_KUNENA_MYPROFILE_MOIMIR'
'COM_KUNENA_MYPROFILE_MOIMIR_DESC'

это надписи на странице. В нашем случае на русском языке – они переведены в языковом файле.

В поле ввода input все переменные moimir – с ними мы будем работать.

Настройка языка кнопок Kunena

Это самая простая часть работы. Открываем языковой файл:

language/ru-RU/ru-RU.com_kunena.ini

Вставляем строки:

COM_KUNENA_MYPROFILE_MOIMIR="Mail - Мой Мир"
COM_KUNENA_MYPROFILE_MOIMIR_DESC="Введите себя на Mail - Мой Мир.(пример: inbox/kukuwka)

Очень важно привести пример, чтобы пользователи в правильной форме вводили данные, иначе ссылка не сработает и покажет страницу ошибки Моего Мира.

Настройка форума Kunena – сохранение профиля

Ищем

components/com_kunena/funcs/profile.php

В функции

function saveProfile()

мы видим список переменных, например:

$yim = trim(JRequest::getVar ( 'yim', '' ));
$msn = trim(JRequest::getVar ( 'msn', '' ));

 В любое место добавляем строку:

$moimir = trim(JRequest::getVar ( 'moimir', '' ));

Следующий блок записывает все изменения в базу данных:

$this->_db->setQuery ( "UPDATE #__kunena_users SET 
personalText={$this->_db->Quote($personnaltext)},birthdate={$this->_db->Quote($birthdate)},
location={$this->_db->Quote($location)},gender={$this->_db->Quote($gender)},
ICQ={$this->_db->Quote($icq)},AIM={$this->_db->Quote($aim)}, 

 Прописываем запись в наш столбец. Не играет роли, куда именно. Например, можно так:

$this->_db->setQuery ( "UPDATE #__kunena_users SET
personalText={$this->_db->Quote($personnaltext)},birthdate={$this->_db->Quote($birthdate)},
location={$this->_db->Quote($location)},gender={$this->_db->Quote($gender)},
ICQ={$this->_db->Quote($icq)},MOIMIR={$this->_db->Quote($moimir)},
 AIM={$this->_db->Quote($aim)}, 

Допустим, поле было заполнено и значение занесено в базу. При повторном изменении профиля пользователь решил удалить данные из этого поля. Следующая строка отвечает за обнуление значений в базе в таком случае.

$this->_db->setQuery ( "UPDATE #__kunena_users SET signature=null,
avatar=null,karma=null,personalText=null,gender=0,birthdate=0000-00-00,
location=null,ICQ=null,AIM=null,YIM=null,MSN=null,SKYPE=null,GTALK=null,
websitename=null,websiteurl=null,rank=0,TWITTER=null,FACEBOOK=null,
MYSPACE=null,LINKEDIN=null,DELICIOUS=null,FRIENDFEED=null,DIGG=null,
BLOGSPOT=null,MOIMIR=null,FLICKR=null,BEBO=null 
WHERE userid={$this->_db->Quote($userid)}" );

Расположение социальных кнопок в Kunena профиле

Следующий файл, который нам нужен:

components/com_kunena/template/default/profile/socialbuttons.php

Тут находится 4 блока – по 5, 3, 5 и 3 строки. Как раз, так и выглядит расположение иконок, если посмотреть на чей-то профиль.

В нужное нам место вставляем строку с нашим значением:

<?php echo $this->profile->socialButton('moimir', $this->showUnusedSocial); ?>

Также вы можете перегруппировать по своему усмотрению расположение кнопок. Нужно просто вырезать нужную строку из 1 блока и вставить в другой.

Переходим к административной части настройки Kunena 1.7.1

Файл

administrator/components/com_kunena/libraries/tables/kunenauser.php

В ряду прочих переменных задаем и нашу:

	/**
	* MOIMIR ID
	* @var string
	**/
	var $MOIMIR = null;
 

Место выбираем любое среди аналогичных блоков.

Где и как изменить Kunena ссылки на социальные сети

administrator/components/com_kunena/libraries/user.php

Нас интересует

public function socialButton($name, $gray = false)

Первая строка функции – это массив, в который нам надо добавить и нашу ссылку:

$social = array ('moimir' => array 
('name' => 'MOIMIR', 'url' => 'http://my.mail.ru/##VALUE##', 
'title' => JText::_ ( 'COM_KUNENA_MYPROFILE_MOIMIR' ), 'nourl' => '0' ),
'twitter' => array ('name' => 'TWITTER', 'url' => 'http://twitter.com/##VALUE##', 
'title' => JText::_ ( 'COM_KUNENA_MYPROFILE_TWITTER' ), 'nourl' => '0' ), 
'facebook' => array ('name' => 'FACEBOOK', 'url' => 'http://www.facebook.com/##VALUE##', 
'title' => JText::_ ( 'COM_KUNENA_MYPROFILE_FACEBOOK' ), 'nourl' => '0' ), 
'myspace' => array ('name' => 'MYSPACE', 'url' => 'http://www.myspace.com/##VALUE##', 
'title' => JText::_ ( 'COM_KUNENA_MYPROFILE_MYSPACE' ), 'nourl' => '0' ), 
'linkedin' => array ('name' => 'LINKEDIN', 'url' => 'http://www.linkedin.com/in/##VALUE##', 
'title' => JText::_ ( 'COM_KUNENA_MYPROFILE_LINKEDIN' ), 'nourl' => '0' ),
< . . . >

Таким образом, по аналогии, можно добавить любое количество полей или удалить, менять их местами, вообщем манипулировать как угодно!

Прилагаю архив с добавленными 3 самыми популярными российскими сервисами. Просто поместите архив extract_root в корень сайта и распакуйте. Файла CSS В АРХИВЕ НЕТ! Он настраивается индивидуально. У меня много своих настроек, которые на вашем шаблоне могут криво смотреться.

---СКАЧАТЬ АРХИВ---

Будут вопросы, спрашивайте - обязательно отвечу и помогу, чем смогу!

Обновлено 12.09.2012 12:36
 

Комментарии
Добавлен: 4 года, 2 мес. назад Slim888 #120
По умолчанию Kunena в профилях пользователей закрывает ссылки в тег nofollow только в подписи.
Открываем файл:
components/com_kunena/template/default/profile/usertab.php
Решение, как закрыть всю подпись в noindex:

Смотрим строку 45:
<div class="kmsgsignature"><div><?php echo KunenaParser::parseBBCode($this->signature); ?></div></div>

Меняем на
<div class="kmsgsignature"><div><noindex><?php echo KunenaParser::parseBBCode($this->signature); ?></noindex></div></div>

Как закрыть сайт пользователя в теги noindex и nofollow:

Строка 40:
<li><?php if (!empty($this->profile->websiteurl)):?><span class="kicon-profile kicon-profile-website"></span><?php endif;?><a href="http://<?php echo $this->escape($this->profile->websiteurl); ?>" target="_blank"><?php echo KunenaParser::parseText($this->profile->websitename); ?></a></li>

Меняем на:
<li><?php if (!empty($this->profile->websiteurl)):?><span class="kicon-profile kicon-profile-website"></span><?php endif;?><noindex><a rel="nofollow" href="http://<?php echo $this->escape($this->profile->websiteurl); ?>" target="_blank"><?php echo KunenaParser::parseText($this->profile->websitename); ?></a></noindex></li>

Чтобы код строк отображался нормально - смотрите через форум (кнопочка "Обсудить на форуме...") или ,если кому-то удобнее, просто скачайте и замените файл: ----->СКАЧАТЬ<-----
Интересная статья? Поделись ей с другими: