LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
20.05.2013, 05:19:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 2.5 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 19   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Различные условия в шаблонах Joomla 1.5  (Прочитано 152047 раз)
0 Пользователей и 1 Гость смотрят эту тему.
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7880


Севастополь==Россия


« : 04.06.2009, 19:58:27 »

Основные моменты по созданию наиболее часто употребляемых условий в шаблонах для Joomla 1.5. Для простоты примеров будем работать с стандартным com_content

Для начала рассмотрим получение необходимых параметров, которые в Joomla 1.0 было достаточно объявить как глобальные
$Itemid JRequest::getInt'Itemid'1'get' ); //получем текущий ItemID, если не определен – то по умолчанию будет 1
$option JRequest::getVar('option'null); // получаем название текущего компонента, в нашем случае будет com_content либо NULL
$view JRequest::getVar('view'null); // получаем значение текущей вьюшки

Примечания:
 - Что такое $Itemid можно прочитать в статье http://joomlaforum.ru/index.php/topic,12816.0.html, по умолчанию значение для главной страницы равно 1, смотреть в модуле mainmenu первую ссылку, либо ссылку, опубликованную в состоянии «по умолчанию»

Какие могут быть значения для $view (Еще может добавляться параметр layout):
Section – если тип ссылки «содержимое раздела»
category – если тип ссылки «содержимое категории» либо переходим из раздела «содержимое раздела», либо тип «блог-содержимое категории»
article – режим просмотра полного текста материала
Как узнать необходимый параметр – отлючить стандартный (или сторонний) SEF и смотреть на URL (до полного просветления).

Теперь дальше рассмотрим различные ситуации, что могут понадобиться. Для начала HTML код по умолчанию (обычный трехколоночный макет без шапки и подвала, в центре место для pathway и вывода компонентов, слева\справа по позиции модулей)
Код:
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

1 – если на позиции RIGHT не опубликовано ни одного модуля, то не показываем определенный блок сайта
Код
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php if($this->countModules('right')) : ?>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php else: ?>
<div class="centercolumn_full"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<?php endif; ?>
Сакральный смысл – если на позиции нет ни одного модуля, мы не покажем вообще rightcolumn, но чтобы центральная колонка раздвинулась на всю оставшуюся ширину, мы к ней применяем отдельный класс centercolumn_full

2 – мы не хотим показывать pathway (хлебные крошки) на главной странице, а только на внутренних
Код
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class=”centercolumn”>
<?php if ($Itemid != '1') { ?>
<jdoc:include type="modules" name="breadcrumb" />
<?php } else { } ?>
<jdoc:include type="component" /></div>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

3 – хотим добавить в центральную колонку модуль (на позиции user1), который будет выводить баннеры (или другую информацию) под текстом статьи, но показывать его только в режиме просмотра полного текста статьи
Код
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn">
<jdoc:include type="modules" name="breadcrumb" />
<jdoc:include type="component" /></div>
<?php if (($option == 'com_content') && ($view == 'article')) { ?>
<jdoc:include type="modules" name="user1" style="xhtml" />
<?php } else {} ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

4 – хотим показывать правую колонку (целиком) только для авторизованного пользователя (там будут какие-нибудь модули), а гости будут видеть только левый блок и основной контент
Код
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<?php
$user = & JFactory::getUser();
if ($user->
get('guest') == '1') { } else { ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php } ?>

5 – хотим авторизованному пользователю показать приветствие с его именем в правой колонке
Код
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<?php
$user = & JFactory::getUser();
echo ‘Привет тебе, о великий '.$user->username'; ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

6 – хотим в произвольном месте шаблона (ну к примеру в левой колонке над модулями) вывести заголовок текущей страницы
Код
<div class="leftcolumn">
<?php
$document = & JFactory::getDocument();
echo $document->
title; ?>
<jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

7 – универсальный способ проверки на главную страницу
Код
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
// на главной
} else {
// тут всё что не на главной
}

Дополнительно:
Все необходимые параметры желательно объявить где-нибудь в index.php заранее и дальше только пользоваться. К примеру сразу после <body> вставить
$Itemid JRequest::getInt'Itemid'1'get' );
$option JRequest::getVar('option'null); 
$view JRequest::getVar('view'null); 
$document 
	
= & 
JFactory::getDocument();
$user = & JFactory::getUser();

Дополнительные ссылки:
Accessing the current user object
[howto] Создание шаблона для Joomla! 1.5
Шаблонизация для компонентов и модулей, на примере модуля patway
и другие ссылки в Joomla FAQ, относящиеся к разделу Шаблоны - установка, создание, проблемные вопросы (много из Joomla 1.0, но много и схожих приемов\примеров)


P.S. естественно, что это не открывает Америки и список примеров далеко не полный, но для базовой основы в качестве ответов на 90% вопросов и пищи для размышлений годится
« Последнее редактирование: 09.02.2010, 13:29:07 от beliyadm » Записан
 
pyh
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 113



« Ответ #31 : 09.02.2010, 13:20:36 »

Код:

<?php
$option = JRequest::getVar('option', null);
$view = JRequest::getVar('view', null);
$bodyclass = '';

if (($option == 'com_content') && ($view != 'article')) : ?>

$bodyclass = 'dark';

<?php else: ?>

<?php endif; ?>


<div id="maincol<php echo $bodyclass; ?>"> text </div>



жизнеспособна ли такая конструкция ? и как впихнуть сюда условие "не применять для главной страницы" ?
Записан
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7880


Севастополь==Россия


« Ответ #32 : 09.02.2010, 13:23:40 »

Код
$option = JRequest::getVar('option', null); 
$view = JRequest::getVar('view', null);
$menu = & JSite::getMenu();
if (($option == 'com_content') && ($view != 'article') && ($menu->getActive()!= $menu->getDefault())) {
соответственно отображать только для com_content в всех просмотрах кроме article и не на главной странице
Записан
dron
Живу я здесь
******

Репутация: +7/-8
Offline Offline

Сообщений: 802


« Ответ #33 : 19.02.2010, 23:22:35 »

День добрый. Где-то была тема, по отображению модулей только на определенных страницах или внутри заданных компонентов... не могу ее найти...

короче, для модуля left задано условие:

Код:
<?php if ( $this->countModules('left') && $option=='com_virtuemart' && $page !='checkout.index' && $page!='shop.cart' && $page!='account.order_details' && $page !='shop.browse' && $page !='checkout.thankyou' && $page !='shop.product_details' && $page !='pokupka.html' ) {?>
<div id="sidebar">
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<?php } ?>

он отображается только на некоторых страницах в компоненте Virtue Mart. о мне также необходимо, что бы данный модуль отображался на некоторых страницах сайта:

сайт www.agrozakaz.ru, нужно что бы отображался на странице http://agrozakaz.ru/pokupka.html.

Как задать данное условие?

Заранее спасибо!

Записан
userxp
Администратор
*******

Репутация: +401/-6
Offline Offline

Пол: Мужской
Сообщений: 2768


Злой и ужасный бармалей


« Ответ #34 : 20.02.2010, 00:17:47 »

для начала надо было бы определиться с $page или вы думаете оно само де-то появится?

$page = JRequest::getString('page');

зы
...&& ! in_array( $page, array('checkout.index','shop.cart','account.order_details','shop.browse','checkout.thankyou','shop.product_details','pokupka.html') )
Записан
dron
Живу я здесь
******

Репутация: +7/-8
Offline Offline

Сообщений: 802


« Ответ #35 : 20.02.2010, 00:25:46 »

блин, я полное чмо в php... можно подробнее? я нашел тут в факах подобную тему, но мозг мой вынесся через 2 минуты старательно чтения...
Записан
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7880


Севастополь==Россия


« Ответ #36 : 20.02.2010, 00:29:07 »

При всем уважении, я бы не использовал in_array, уж больно оно тупит (хоть массив и не велик)
Записан
userxp
Администратор
*******

Репутация: +401/-6
Offline Offline

Пол: Мужской
Сообщений: 2768


Злой и ужасный бармалей


« Ответ #37 : 20.02.2010, 00:43:36 »

интересно, а как ты это тестировал?
я вот сижу, думаю, и никак не могу придумать методику тестирования

можно вбить десяток переменных, но это не тест
а для соти - затрахаешься вбивать
Записан
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7880


Севастополь==Россия


« Ответ #38 : 20.02.2010, 01:48:49 »

интересно, а как ты это тестировал?
я вот сижу, думаю, и никак не могу придумать методику тестирования
последний раз с год назад проверял на цикле выборки из базы в массив - начиная от проверки в массиве из сотни записей и выше - начинало заметно тормозить
Записан
userxp
Администратор
*******

Репутация: +401/-6
Offline Offline

Пол: Мужской
Сообщений: 2768


Злой и ужасный бармалей


« Ответ #39 : 20.02.2010, 13:19:18 »

да, но в сравнении с чем?
ты же не создавал 100 переменных

зы. там статейка лежит. старая. по быстродействию пхп.
там рассказано насчет имен переменных и массивов в т.ч.

по своему опыту могу сказать - то, что реально можно было сравнить - делал два массива с числовой и буквенной индексацией (три буквы)
так вот, быстродействие алфавитного медленнее примерно в 2.5 раза

но это когда есть что с чем сравнивать...
а тут даже не знаю...

я могу судить только с точки зрения (возможного) распределения памяти (т.е., как бы я реализовал компилятор массива)
так вот, - как мне кажется, массив при таких условиях будет работать эффективнее
хотя опять же повторюсь - сравнивать не с чем
Записан
AlexDr
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 69


Si vis pacem para bellum


« Ответ #40 : 26.02.2010, 22:05:12 »

А как в это условие
Код:
<?php if (($option == 'com_content') && ($view == 'article')) { ?>

добавить еще, чтобы оно работало только для динамический статей (т.е. для которых есть какой-то раздел и категория), а для статический (без раздела и категории) не выполнялось бы?

Видимо как-то надо достучаться до перменной catid, но сделать этого не получается.
Записан
SmokerMan
Профи
********

Репутация: +563/-21
Offline Offline

Пол: Мужской
Сообщений: 4536



« Ответ #41 : 26.02.2010, 22:14:59 »

А как в это условие
Код:
<?php if (($option == 'com_content') && ($view == 'article')) { ?>

добавить еще, чтобы оно работало только для динамический статей (т.е. для которых есть какой-то раздел и категория), а для статический (без раздела и категории) не выполнялось бы?

Видимо как-то надо достучаться до перменной catid, но сделать этого не получается.
что именно не получается?
Код
$Category = JRequest::getInt('catid');
echo $Category;
 
в виде материала параметр catid присутствует, по крайне мере в стандартных расширениях точно.
Записан
AlexDr
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 69


Si vis pacem para bellum


« Ответ #42 : 26.02.2010, 22:29:38 »

Спасибо, этого мне и не хватало Azn

Если хотим скрывать модуль в позиции right только при просмотре статей, у которых категория задана, а для всего остального (включая статьи без категории - "не указана") показывать, то подойдет такое условие:

Код:
<?php if ((($option == 'com_content') && ($view != 'article')) || ($Category == '0')) : ?>
      <jdoc:include type="modules" name="right" style="xhtml" />
<?php endif; ?>
Записан
AlexDr
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 69


Si vis pacem para bellum


« Ответ #43 : 26.02.2010, 23:02:29 »

Поспешил. При включенном стандартном ЧПУ конструкция написанная выше не работает. Как можно ее реализовать при включенном ЧПУ?
Записан
AlexDr
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 69


Si vis pacem para bellum


« Ответ #44 : 27.02.2010, 03:27:54 »

Вырубил все статические материалы через id документа
Код:
$id = JRequest::getInt('id');
<?php if ((($option == 'com_content') && ($view != 'article')) || ($id == 'ваш_id1') || ($id == 'ваш_id2')...) : ?>
      <jdoc:include type="modules" name="right" style="xhtml" />
<?php endif; ?>
но это конечно не системное решение. Системного не знаю.
Записан
SmokerMan
Профи
********

Репутация: +563/-21
Offline Offline

Пол: Мужской
Сообщений: 4536



« Ответ #45 : 27.02.2010, 12:03:22 »

сам забываю про SEF Azn
На уровне шаблона с включенным SEF получить категорию в виде материала будет наверное проблематично.
Единственное что могу посоветовать - это создать отдельное меню для категорий или секций и не публиковать его. Если таких нет.
И нужные модули публиковать или не публиковать соответственно для этих пунктов меню
Записан
SerB
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #46 : 19.03.2010, 20:18:21 »

Почитал, И кроме того что встретил знакомые буквы... никакого прогресса...
Ситуация интересная. шаблон rt_kinetic, в позицию showcase-b выводится  модуль mod_K2_login (очень интересная штука, если в ней ничего не выводится то shjwcase -свертывается до полоски в 15px).После удачного входа mod_K2_login при удачном входе заменяется на mod_K2_user (как я понял, там - аватар пользователя, пользовательское меню). Можно ли и как добавить возможность скрытия/открытия showcase (или этих модулей) по клику мышки пользователем? 
Записан
drwhiteman
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #47 : 24.03.2010, 13:53:26 »

Решил сделать верстку с плаваньем и растяжение содержимого в зависимости от наличия левой или правой колонки..
По идее подходит пункт 1.. но есть второе условие что при отсутствии левой колонки содержимое растягивалось на всю ширину..
1. (левая колонка 20%) + (содержимое 60%) + (правая колонка 20%)
2. (левая колонка 20%) + (содержимое 80%)
3. (содержимое 80%) + (правая колонка 20%)
4. (содержимое 100%)

Вроде вот в таком виде все работает, но может кто напишет более оптимизированный код

Код:
<?php if($this->countModules('left')) : ?>
<div class="leftcol"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php if($this->countModules('right')) : ?>
<div class="centercol"><jdoc:include type="component" /></div>
<div class="rightcol"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php else: ?>
<div class="centercol_full"><jdoc:include type="component" /></div>
<?php endif; ?>
<?php else: ?>
<?php if($this->countModules('right')) : ?>
<div class="centercol2"><jdoc:include type="component" /></div>
<div class="rightcol2"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php else: ?>
<div class="centercol2_full"><jdoc:include type="component" /></div>
<?php endif; ?>
<?php endif; ?>

CSS приводить смысла нет там все понятно..
Записан
bulls
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 81



« Ответ #48 : 25.03.2010, 13:30:32 »

Вот встретил,в зависимости от времени суток подключает тот или другой .css
Код:
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/vekta/css/<?php echo (date("%H")>=7 && date("%H")<19)? "day" : "night" ?>.css" type="text/css" />
Но сам в этом не силён,а уже нарисовал два шаблона,как сделать что-бы переключался не в 12 а в 9?
Тоесть с 9:00 до 17:00,и переключаеться с дневного на ночной стиль
Записан
regionkaz
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 102


« Ответ #49 : 25.03.2010, 18:53:35 »

Что значит не в 12? в коде написано с 7 утра до 19 вечера. Если нужно другое время меняем соответствующие цифры.
« Последнее редактирование: 25.03.2010, 18:55:41 от userxp » Записан
regionkaz
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 102


« Ответ #50 : 25.03.2010, 18:59:44 »

beliyadm, а ты не задумывался написать книгу про Joomla, не для чайников так сказать, а что нибудь более продвинутое? Зарубежной литературы хватает, а вот отечественного произведения нет!
Записан
bulls
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 81



« Ответ #51 : 25.03.2010, 20:28:45 »

Что значит не в 12? в коде написано с 7 утра до 19 вечера. Если нужно другое время меняем соответствующие цифры.
regionkaz
Блин совсем голова кругом,даже и не заметил.Я же "говорил" что в php не силён,во спасибо тебе.
Нарисовать сверстать,ещё можно,но вот проблема с различными там условиями,да и вобше с php
Записан
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7880


Севастополь==Россия


« Ответ #52 : 25.03.2010, 23:01:53 »

beliyadm, а ты не задумывался написать книгу про Joomla, не для чайников так сказать, а что нибудь более продвинутое? Зарубежной литературы хватает, а вот отечественного произведения нет!
чукча не писатель, чукча читатель
Записан
bulls
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 81



« Ответ #53 : 26.03.2010, 12:28:35 »

Чёто всё равно у меня не получаеться,.Подгружаеться только один ночной шаблон.Мож быть это из за денвера?
Кто сталкивался с этим подскажите!
 Я уже создал,три  индексных файла:
index-day.php
index-night.php
index.php-и в нём написал
Код:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

if (date("%H") >= '7' && date("%H") < '18') {
        require 'index-day.php';
} else {
        require 'index-night.php';
}
?>
Записан
regionkaz
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 102


« Ответ #54 : 26.03.2010, 13:54:15 »

Чёто всё равно у меня не получаеться,.Подгружаеться только один ночной шаблон.Мож быть это из за денвера?
Кто сталкивался с этим подскажите!
 Я уже создал,три  индексных файла:
index-day.php
index-night.php
index.php-и в нём написал
Код:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

if (date("%H") >= '7' && date("%H") < '18') {
        require 'index-day.php';
} else {
        require 'index-night.php';
}
?>

 Shocked А зачем это все?

Цитировать
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/vekta/css/<?php echo (date("%H")>=7 && date("%H")<19)? "day" : "night" ?>.css" type="text/css" />

в это коде подключаются разные стили. с 7 утра подключается day.css, a с 19 вечера night.css. Index.php не клонируй, а то током убъет!  Cool
Записан
bulls
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 81



« Ответ #55 : 26.03.2010, 15:21:49 »

Да я уже всё перепробовал,и то не работает и это!
Менял время,думал мож он переключился.Нет как был ночь так и стоит
Записан
Nazaretto
Завсегдатай
*****

Репутация: +4/-4
Offline Offline

Пол: Мужской
Сообщений: 561



« Ответ #56 : 27.03.2010, 12:32:28 »

Мне сказали что в этой статье можно решить мою проблему: http://joomlaforum.ru/index.php/topic,107040.msg591758.html#msg591758
Но где именно в этой статье прописано решение? Я не могу разобраться... 
Записан
Professor
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« Ответ #57 : 27.03.2010, 15:52:14 »

Решил сделать верстку с плаваньем и растяжение содержимого в зависимости от наличия левой или правой колонки..
По идее подходит пункт 1.. но есть второе условие что при отсутствии левой колонки содержимое растягивалось на всю ширину..
1. (левая колонка 20%) + (содержимое 60%) + (правая колонка 20%)
2. (левая колонка 20%) + (содержимое 80%)
3. (содержимое 80%) + (правая колонка 20%)
4. (содержимое 100%)

Вроде вот в таком виде все работает, но может кто напишет более оптимизированный код

Код:
<?php if($this->countModules('left')) : ?>
<div class="leftcol"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php if($this->countModules('right')) : ?>
<div class="centercol"><jdoc:include type="component" /></div>
<div class="rightcol"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php else: ?>
<div class="centercol_full"><jdoc:include type="component" /></div>
<?php endif; ?>
<?php else: ?>
<?php if($this->countModules('right')) : ?>
<div class="centercol2"><jdoc:include type="component" /></div>
<div class="rightcol2"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php else: ?>
<div class="centercol2_full"><jdoc:include type="component" /></div>
<?php endif; ?>
<?php endif; ?>

CSS приводить смысла нет там все понятно..

Буквально на днях с подобной ситуацией столкнулся. Вот как сделал:
в начале страницы, где то после
Код:
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
написал вот такую конструкцию (адаптировано под твой случай, только окончания у классов изменены)

Код:
<?php
if(!$this->countModules('left') && !$this->countModules('right')) // если нет ни одной колонки
  $suffix = "_full";
elseif (($this->countModules('left') && !$this->countModules('right')) || (!$this->countModules('left') && $this->countModules('right'))) // если есть хоть одна колонка (ширина у центрального элемента в обоих случаях будет одинакова)
  $suffix = "_only_one";
else // во всех остальных случаях (т.е. когда есть и правая и левая колонка)
  $suffix = "";
?>
... шаблон ...
<?php if($this->countModules('left')) : ?>
<div class="leftcol"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php endif; ?>
<div class="centercol<?php echo $suffix; ?>"><jdoc:include type="component" /></div>
<?php if($this->countModules('left')) : ?>
<div class="rightcol"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php endif; ?>

а в CSS файле что то вроде

Код:
div.centercol,
div.centercol_full,
div.centercol_only_one {
   font-family: Tahoma;
   font-size: 12pt;
   font-weight: normal;
   color: #111111;

   width: 60%;
}

div.centercol_only_one {
   width: 80%;
}

div.centercol_full {
   width: 100%;
}

Не знаю, является ли он более оптимизированным, но зато в шаблоне всего один раз встречается
Код:
<div class="centercol<?php echo $suffix; ?>"><jdoc:include type="component" /></div>
Записан
radru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #58 : 05.04.2010, 21:34:31 »

1. Подскажите как вывести модуль только на одной главной компонента SOBI2, что нужно прописать в условии?
2. И как вывести уже другой модуль только в определенной категории модуля SOBI2?
   dry

Заранее большое спасибо, если кто то ответит. Уже наверно месяца не могу найти ответа!
  Yes!
Записан
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7880


Севастополь==Россия


« Ответ #59 : 05.04.2010, 22:06:16 »

1 - смотрите значение параметра option
2 - смотрите тот же option и какую нибудь view\task и id нужной категории
В первом случае добавляем проверку обязательно на пункт 2 пустое значение
Да и вообще просто покажите урл любой категории с отключенным SEF, будет проще
Записан
radru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #60 : 07.04.2010, 21:43:15 »

1 - смотрите значение параметра option
2 - смотрите тот же option и какую нибудь view\task и id нужной категории
В первом случае добавляем проверку обязательно на пункт 2 пустое значение
Да и вообще просто покажите урл любой категории с отключенным SEF, будет проще

Вот пожалуйста, только что бы на этой странице показывался модуль "допустим user1"
http://domen.com/index.php?option=com_sobi2&Itemid=3

и еще условие что бы только на всех страницах, в определенной категории
http://domen.com/index.php?option=com_sobi2&catid=4&Itemid=3
Записан
Страниц: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 19   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.18 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet