Первое что очень мне не понравилось при работе с JomSocial так это его «не логичный» toolbar (меню). Т.е. мне и многим пользователям не понятно почему авторы этого компонента поместили разделы Группы, Фото и Видео в меню Приложения. Как-то не логично и не удобно, особенно для российских пользователей, привыкшим к контакту и одноклассникам. Итак наша задача вынести подпункты Группы, Фото и Видео в отдельные пункты меню. Сражу скажу, не пугайтесь ниже приведенного кода, всё что вам понадобится это знание процесса «copy-paste» Всё проверялось на JomSocial версии 1.6.285 (но думаю с другими версиями проблем быть не должно).
Для начала нам понадобится файл toolbar.php, который лежит тут: «вашсайт/components/com_community/libraries/toolbar.php». Ищем код, который начинается так (у меня это 17 строка):
if(! defined('TOOLBAR_HOME'))
define( 'TOOLBAR_HOME', 'HOME');
if(! defined('TOOLBAR_PROFILE'))
define( 'TOOLBAR_PROFILE', 'PROFILE');
if(! defined('TOOLBAR_FRIEND'))
define( 'TOOLBAR_FRIEND', 'FRIEND');
if(! defined('TOOLBAR_APP'))
define( 'TOOLBAR_APP', 'APP');
if(! defined('TOOLBAR_INBOX'))
define( 'TOOLBAR_INBOX', 'INBOX');
class CToolbar {
var $_toolbar = array();
function CToolbar(){
$this->_toolbar = array(
TOOLBAR_HOME => null,
TOOLBAR_PROFILE => null,
TOOLBAR_FRIEND => null,
TOOLBAR_APP => null,
TOOLBAR_INBOX => null
);
Этот код с 17 по 44 строку (у меня) заменяем следующим:
if(! defined('TOOLBAR_HOME'))
define( 'TOOLBAR_HOME', 'HOME');
if(! defined('TOOLBAR_PROFILE'))
define( 'TOOLBAR_PROFILE', 'PROFILE');
if(! defined('TOOLBAR_FRIEND'))
define( 'TOOLBAR_FRIEND', 'FRIEND');
if(! defined('TOOLBAR_GROUPS'))
define( 'TOOLBAR_GROUPS', 'GROUPS');
if(! defined('TOOLBAR_PHOTOS'))
define( 'TOOLBAR_PHOTOS', 'PHOTOS');
if(! defined('TOOLBAR_VIDEOS'))
define( 'TOOLBAR_VIDEOS', 'VIDEOS');
if(! defined('TOOLBAR_APP'))
define( 'TOOLBAR_APP', 'APP');
if(! defined('TOOLBAR_INBOX'))
define( 'TOOLBAR_INBOX', 'INBOX');
class CToolbar {
var $_toolbar = array();
function CToolbar(){
$this->_toolbar = array(
TOOLBAR_HOME => null,
TOOLBAR_PROFILE => null,
TOOLBAR_FRIEND => null,
TOOLBAR_GROUPS => null,
TOOLBAR_PHOTOS => null,
TOOLBAR_VIDEOS => null,
TOOLBAR_APP => null,
TOOLBAR_INBOX => null
);
Опускаемся ниже (135 строка) и находим:
case TOOLBAR_APP :
$default->caption = JText::_('CC APPLICATIONS');
$default->link = CRoute::_('index.php?option=com_community&view=apps');
$default->view = array('apps', 'groups', 'photos', 'videos');
$defaultCoreMenuArray['APP_EDIT_APPS'] = $this->_addDefaultItem(
JText::_('CC EDIT APPS'),
CRoute::_('index.php?option=com_community&view=apps')
);
$defaultCoreMenuArray['APP_BROWSE_APPS'] = $this->_addDefaultItem(
JText::_('CC BROWSE APPS'),
CRoute::_('index.php?option=com_community&view=apps&task=browse'),
false,
true
);
if($config->get('enablegroups')){
$defaultCoreMenuArray['APP_GROUP'] = $this->_addDefaultItem(
JText::_('CC GROUP'),
CRoute::_('index.php?option=com_community&view=groups&task=mygroups&userid='. $my->id)
);
}
if($config->get('enablephotos')){
$defaultCoreMenuArray['APP_PHOTOS'] = $this->_addDefaultItem(
JText::_('CC PHOTOS'),
CRoute::_('index.php?option=com_community&view=photos&task=myphotos&userid='. $my->id)
);
}
if($config->get('enablevideos')){
$defaultCoreMenuArray['APP_VIDEOS'] = $this->_addDefaultItem(
JText::_('CC VIDEOS'),
CRoute::_('index.php?option=com_community&view=videos&task=myvideos&userid='. $my->id)
);
}
break;
Меняем его на:
case TOOLBAR_GROUPS :
$default->caption = JText::_('CC GROUP');
$default->link = CRoute::_('index.php?option=com_community&view=groups&task=mygroups&userid='. $my->id);
$default->view = array('groups');
break;
case TOOLBAR_PHOTOS :
$default->caption = JText::_('CC PHOTOS');
$default->link = CRoute::_('index.php?option=com_community&view=photos&task=myphotos&userid='. $my->id);
$default->view = array('photos');
break;
case TOOLBAR_VIDEOS :
$default->caption = JText::_('CC VIDEOS');
$default->link = CRoute::_('index.php?option=com_community&view=videos&task=myvideos&userid='. $my->id);
$default->view = array('videos');
break;
case TOOLBAR_APP :
$default->caption = JText::_('CC APPLICATIONS');
$default->link = CRoute::_('index.php?option=com_community&view=apps');
$default->view = array('apps', 'groups');
$defaultCoreMenuArray['APP_EDIT_APPS'] = $this->_addDefaultItem(
JText::_('CC EDIT APPS'),
CRoute::_('index.php?option=com_community&view=apps')
);
$defaultCoreMenuArray['APP_BROWSE_APPS'] = $this->_addDefaultItem(
JText::_('CC BROWSE APPS'),
CRoute::_('index.php?option=com_community&view=apps&task=browse'),
false,
true);
break;
И последнее, что нам понадобится тут это:
$tbCore = array(
TOOLBAR_HOME => '1',
TOOLBAR_PROFILE => '1',
TOOLBAR_FRIEND => '1',
TOOLBAR_APP => '1',
TOOLBAR_INBOX => '1'
);
Меняем на:
$tbCore = array(
TOOLBAR_HOME => '1',
TOOLBAR_PROFILE => '1',
TOOLBAR_FRIEND => '1',
TOOLBAR_GROUPS => '1',
TOOLBAR_PHOTOS => '1',
TOOLBAR_VIDEOS => '1',
TOOLBAR_APP => '1',
TOOLBAR_INBOX => '1'
);
С файлом toolbar.php покончено. Второй и последний файл, который нам понадобится, так это toolbar.index.php. Он находится тут: «вашсайт/components/com_community/templates/default/toolbar.index.php». Тут нам нужно найти следующие две конструкции идущие друг за другом:
//Pervaya. U menya eto 86-yz stroka. Zdes vivoditsya punkt "Druzia"
<?php
if(isset($customToolbar) && !empty($customToolbar)){
if($customToolbar->hasToolBarGroup(TOOLBAR_FRIEND)){
$frenItem = $customToolbar->getToolbarItems(TOOLBAR_FRIEND);
?>
<li id="toolbar-item-friends" class="<?php echo $toolbarClass[TOOLBAR_FRIEND];?>">
<a href="<?php echo $frenItem->link; ?>" onmouseover="joms.toolbar.open('m2')" onmouseout="joms.toolbar.closetime()">
<?php echo $frenItem->caption; ?>
</a>
<div id="m2" onmouseover="joms.toolbar.cancelclosetime()" onmouseout="joms.toolbar.closetime()" style="visibility: hidden;">
<?php echo $customToolbar->getMenuItems(TOOLBAR_FRIEND, 'prepend');?>
<?php echo $customToolbar->getMenuItems(TOOLBAR_FRIEND, 'append');?>
</div>
</li>
<?php } } ?>
//............(tut mi razmestim svoi code)
//Vtoraya. U menya eto 105=ayz stroka. Zdes vivoditsya punkt "Prilojeniya"
<?php if(isset($customToolbar) && !empty($customToolbar)){ if($customToolbar->hasToolBarGroup(TOOLBAR_APP)){
$appItem = $customToolbar->getToolbarItems(TOOLBAR_APP);
?>
<li id="toolbar-item-apps" class="<?php echo $toolbarClass[TOOLBAR_APP];?>">
<a href="<?php echo $appItem->link; ?>" onmouseover="joms.toolbar.open('m3')" onmouseout="joms.toolbar.closetime()">
<?php echo $appItem->caption; ?>
</a>
<div id="m3" onmouseover="joms.toolbar.cancelclosetime()" onmouseout="joms.toolbar.closetime()" style="visibility: hidden; overflow: hidden;">
<?php echo $customToolbar->getMenuItems(TOOLBAR_APP, 'prepend'); ?>
<?php echo $customToolbar->getMenuItems(TOOLBAR_APP, 'append'); ?>
</div>
</li>
<?php } } ?>
Итак, между этими конструкциями вставляем следующий код:
<!--Vivod otdelnogo punkta menu "Gruppi"-->
<?php
if(isset($customToolbar) && !empty($customToolbar)){
if($customToolbar->hasToolBarGroup(TOOLBAR_GROUPS)){
$groupItem = $customToolbar->getToolbarItems(TOOLBAR_GROUPS);
?>
<li id="toolbar-item-groups" class="<?php echo $toolbarClass[TOOLBAR_GROUPS]; ?>">
<a href="<?php echo $groupItem->link; ?>">
<?php echo $groupItem->caption; ?>
</a>
</li>
<?php
}
}
?>
<!--Konec bloka dlya vivoda "Gruppi"-->
<!--Vivod otdelnogo punkta menu "FOTO"-->
<?php
if(isset($customToolbar) && !empty($customToolbar)){
if($customToolbar->hasToolBarGroup(TOOLBAR_PHOTOS)){
$photoItem = $customToolbar->getToolbarItems(TOOLBAR_PHOTOS);
?>
<li id="toolbar-item-photos" class="<?php echo $toolbarClass[TOOLBAR_PHOTOS]; ?>">
<a href="<?php echo $photoItem->link; ?>">
<?php echo $photoItem->caption; ?>
</a>
</li>
<?php
}
}
?>
<!--Konec bloka dlya vivoda "FOTO"-->
<!--Vivod otdelnogo punkta menu "Video"-->
<?php
if(isset($customToolbar) && !empty($customToolbar)){
if($customToolbar->hasToolBarGroup(TOOLBAR_VIDEOS)){
$videoItem = $customToolbar->getToolbarItems(TOOLBAR_VIDEOS);
?>
<li id="toolbar-item-videos" class="<?php echo $toolbarClass[TOOLBAR_VIDEOS]; ?>">
<a href="<?php echo $videoItem->link; ?>" >
<?php echo $videoItem->caption; ?>
</a>
</li>
<?php
}
}
?>
<!--Konec bloka dlya vivoda "Video"-->
Вот впринципе и всё, теперь у нас есть понятный пользователям и логичный тулбар, который осталось только стилизовать под наш сайт.
Статья взята отсюда:
http://www.idangero.us