Каждый кто работает с CMS Joomla знает как часто бывает нужно изменить или запретить вывод основного контента на главной странице, задать условия для вывода модулей и т.д.
Вывести id категории материала
<?php echo $item->catid;?>
Условие не выводить при определенном компоненте
На нашем примере com_users страница регистрации
<?php if(JRequest::getVar('option') != 'com_users' && JRequest::getVar('view') !='registration') { ?>
<a href="#dialog" name="modal">Войти</a>
<?php } ?>
Условие выводить при определенном пункте меню.
На нашем примере пункт меню с индефикатором 101.
<?php $Itemid = JRequest::getInt( 'Itemid' ); ?> //в верху index.php
<?php if ($Itemid == '101') { ?>
<jdoc:include type="component" />
<?php } ?>
Условие не выводить при определенном пункте меню.
На нашем примере пункт меню с индефикатором 101.
<?php $Itemid = JRequest::getInt( 'Itemid' ); ?> в верху index.php
//не выводить
<?php if ($Itemid != '101') { ?>
<jdoc:include type="component" />
<?php } ?>
//выводить
<?php if ($Itemid == '101') { ?>
<jdoc:include type="component" />
<?php } ?>
Не выводить в нескольких пунтах. На нашем примере пункты меню с индефикатором 101 и 105.
<?php if (!in_array($Itemid, array("101", "105"))) { ?>
<jdoc:include type="component" />
<?php } ?>
Выводить в нескольких пунтах.
<?php if (in_array($Itemid, array("101", "105"))) { ?>
<jdoc:include type="component" />
<?php } ?>
Как сделать логотип кликабельным на внутренних страницах а на главной странице не кликабельным.
<?php
if(!JMenuSite::getInstance('site')->getActive()->home){
echo '<a href="/" class="logo"></a>';
} else {
echo '<div class="logo"></div>';
};
?>
Логотип в зависимотси от языка сайта.
На нашем примере используется два языка, русский и английский.
<?php
$lang = Jrequest::getVar('lang','ru');
if ($lang == 'ru')
{
$lang_subclass = '_ru';
$lang_switcher_text = 'In English';
$lang_suffix = 'index.php?lang=en';
} else {
$lang_subclass = '_en';
$lang_switcher_text = 'На Русском';
$lang_suffix = 'index.php?lang=ru';
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<body>
<script type="text/javascript">
var _gaq=_gaq||[];_gaq.push(["_setAccount","UA-2489339-3"]);_gaq.push(["_setDomainName","transparency.org.ru"]);_gaq.push(["_trackPageview"]);(function(){var a=document.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==document.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b)})();
</script>
<div id="logo<?php echo $lang_subclass;?>">
<a href="/" ></a>
</div>
</body>
</html>
Добавленние позиции модуля в шаблоны компонентов.
На нашем примере позиция content-top
<?php
jimport( 'joomla.application.module.helper' );
$modules = JModuleHelper::getModules('content-top');
$attribs['style'] = 'xhtml';
foreach($modules as $module){
echo JModuleHelper::renderModule($module, $attribs);
}
?>
Добавление класса в блок если опубликованна позиция в нем.
menu-collection позиция
maxifix класс добавляемый если опубликована позиция menu-collection
<header class="<?php echo ( $this->countModules('menu-collection') ? 'maxifix' : '' );?> header">
Условие если нет колонок то контент во свю ширину.
php
<?php
if($this->countModules('left and right') == 0) $contentwidth = "_full";
if($this->countModules('left or right') == 1) $contentwidth = "_middle";
if($this->countModules('left and right') == 1) $contentwidth = "_small";
?>
<!-- component -->
<div id="hv_component">
<?php if($this->countModules('left')) : ?>
<div class="hv_left">
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<?php endif; ?>
<div class="hv_center<?php echo $contentwidth; ?>">
<jdoc:include type="modules" name="center" style="xhtml" />
</div>
<?php if($this->countModules('right')) : ?>
<div class="hv_right">
<jdoc:include type="modules" name="right" style="xhtml" />
</div>
<?php endif; ?>
</div>
<!-- end component -->
css
#hv_component{width:980px;}
.hv_center_full{float:left;background:white;width:980px;}
.hv_center_middle{float:left;background:white;width:697px;}
.hv_center_small{float:left;background:white;width:414px;}
.hv_left{float:left;}
.hv_left .moduletable{width:283px;background:green;}
.hv_right{float:left;}
.hv_right .moduletable{width:283px;background:red;}
Условия для зарегестрированных и не зарегестрированных пользователей.
//Показываем ссылку зарегестрированным
<?php $user = & JFactory::getUser(); if ($user->get('guest') == '1') { } else { ?>
<h3><a href="/<?php echo $row->readmore; ?>"><?php echo $row->title; ?></a></h3>
<?php } ?>
//Запрещаем кликать по ссылке незарегестрированным и выводим подсказку.
<?php $user = & JFactory::getUser(); if ($user->get('guest') == '0') { } else { ?>
<h3><a class="tooltip" href="javascript: void(0)"><?php echo $row->title; ?><span class="classic"><?php echo JText::_('NM_TOOLTIP_USER'); ?></span></a></h3>
<?php } ?>