Различные условия PHP в CMS Joomla

various php conditions in joomla cmsКаждый кто работает с 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 } ?>