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

Войти
   
   Начало   Поиск Joomla 1.7 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   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Различные условия в шаблонах Joomla 1.5  (Прочитано 85881 раз)
0 Пользователей и 1 Гость смотрят эту тему.
beliyadm
Профи
********

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

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


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


« : 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 » Записан
 
combat1988
Захожу иногда
**

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

Сообщений: 5


« Ответ #181 : 25.08.2010, 17:36:32 »

Помогите пожалуйста с проблемой!

У меня есть шапка сайта, топ меню. далее загвоздка!
Мне нужно сделать 4 фрейма квадратом 1 2 с разными материалами из различных тем, и чтобы в них можно было просматривать
                                                         3 4
материалы из различных разделов и категорий!

Что прописать в шаблоне чтобы он мог так выводить только на главной?
Как это выводить только на главной я уже понял, а вот как 4 фрейма с различными материалами сделать не понимаю !
Записан
Elena09
Осваиваюсь на форуме
***

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

Сообщений: 98


« Ответ #182 : 03.09.2010, 13:37:52 »

У меня два сайдбара и оба слева, правый как раз надо скрыть,при отсутствии модуля,и main растянуть по ширине. делаю 1 – если на позиции RIGHT не опубликовано ни одного модуля, то не показываем определенный блок сайта и какая-то хрень выходит((
Записан
Professor
Осваиваюсь на форуме
***

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

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



« Ответ #183 : 03.09.2010, 22:20:34 »

и какая-то хрень выходит((
знаете, какой вопрос, такой и ответ будет
Записан
igoryk
Давно я тут
****

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

Сообщений: 227


« Ответ #184 : 05.09.2010, 18:39:06 »

очень нужно прописать условие в шаблоне для вывода нескольких блоков в позиции right только для VirtueMart как это сделать?

При просмотре главной, и всего кроме VM модули в позиции right скрыты, отображаются только модули из позиций left, banner, top и т.д.   -



нужно, чтобы - при просмотре категорий, карточки товара, и всего что в VM - отображались блоки в позиции right а left была скрыта


И еще - при переходе в категорию товара с главной видим  -



КАК ПОБОРОТЬ ?
« Последнее редактирование: 05.09.2010, 18:45:00 от igoryk » Записан
beliyadm
Профи
********

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

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


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


« Ответ #185 : 06.09.2010, 00:41:54 »

Цитировать
КАК ПОБОРОТЬ ?
Смотрите в адресную строку, берите параметры из URL, читайте еще раз первое сообщение данной темы и пишите условия в шаблоне, что еще можно сказать то, никаких принципиальных сложностей я здесь не вижу
Записан
igoryk
Давно я тут
****

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

Сообщений: 227


« Ответ #186 : 06.09.2010, 02:42:51 »

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

Читал, читаю, пробую, но не получается Sad

Поэтому и прошу помощи...

вот какая ссылка при переходе с главной - левый блок не отображается (а нужен)
xxx/index.php?option=com_virtuemart&page=shop.browse&category_id=231

а при переходе с других страниц - левый блок отображается
xxx/index.php?option=com_virtuemart&page=shop.browse&category_id=231&Itemid=71

« Последнее редактирование: 06.09.2010, 02:49:40 от igoryk » Записан
beliyadm
Профи
********

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

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


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


« Ответ #187 : 06.09.2010, 09:40:19 »

вот какая ссылка при переходе с главной - левый блок не отображается (а нужен)
xxx/index.php?option=com_virtuemart&page=shop.browse&category_id=231

а при переходе с других страниц - левый блок отображается
xxx/index.php?option=com_virtuemart&page=shop.browse&category_id=231&Itemid=71
Естественно, показ блоков, заданных к показу в админке модуля работает от ItemID (идентификатор пункта меню)
При равных прочих параметрах ссылок в первой ссылке у вас блок и не отображается, потому что не задан этот параметр.
Почему в первой отсутствует Itemid - понятия не имею, надо разбираться (либо в индексе шаблона жестко задавать показ левого блока условиями от $option == 'com_virtuemart' && $page == 'shop.browse')
Записан
igoryk
Давно я тут
****

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

Сообщений: 227


« Ответ #188 : 06.09.2010, 22:51:32 »

Естественно, показ блоков, заданных к показу в админке модуля работает от ItemID (идентификатор пункта меню)
При равных прочих параметрах ссылок в первой ссылке у вас блок и не отображается, потому что не задан этот параметр.
Почему в первой отсутствует Itemid - понятия не имею, надо разбираться (либо в индексе шаблона жестко задавать показ левого блока условиями от $option == 'com_virtuemart' && $page == 'shop.browse')

Очень прошу  - можно поподробней?
вод код страницы (без всякой шелухи) естественно он складывается как надо с помощью CSS
где и как что прописать, чтобы првай блок отображался только при просмотре virtuemart ?

Код:
<div id="main">
<?php if(!$tmpTools->isFrontPage()) : ?>
                <div id="breadcrumbs">
                <jdoc:include type="module" name="breadcrumbs" />
                </div>
<?php endif ; ?>
<div id="bread_crumbs_not"></div>
<!-- left_section -->
<div id="sidebar_left_section">
        <div id="left_box">
<!-- left block -->
<?php if( $this->countModules('left') ) {?>
          <jdoc:include type="modules" name="left" style="left" />
    <?php } ?>
<!--end left block -->

        </div>
</div>
<!-- end left_section -->


<!-- right_section -->
<div id="right_block">
<?php if( $this->countModules('right') ) {?>
                          <jdoc:include type="modules" name="right" style="right" />
 <?php } ?>
 </div>
<!-- end right_section -->

<!-- main_content -->
<div id="news_main_section">
 <?php if(!$tmpTools->isFrontPage()) : ?>
                        <div id="main_search"><jdoc:include type="component" /></div>
   <?php endif; ?>
</div>
<!-- end main_content -->
</div>

Записан
beliyadm
Профи
********

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

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


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


« Ответ #189 : 07.09.2010, 11:19:39 »

где и как что прописать, чтобы првай блок отображался только при просмотре virtuemart ?
Код
<?php
$option = JRequest::getVar('option', null);
?>
<!-- right_section -->
<?php if( $option == 'com_virtuemart' ) {?>
<div id="right_block">
<?php if( $this->countModules('right') ) {?>
     <jdoc:include type="modules" name="right" style="right" />
<?php } ?>
</div>
<?php } ?>
Таким условием весь див right_block показывается только на странице вирта. При этом надо учитывать, что на других страницах, где не будет правого блока надо растягивать центр на оставшееся пространство (зависит от дизайна), то есть условие надо продлевать и на <div id="main">
Записан
igoryk
Давно я тут
****

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

Сообщений: 227


« Ответ #190 : 07.09.2010, 13:33:31 »

Таким условием весь див right_block показывается только на странице вирта. При этом надо учитывать, что на других страницах, где не будет правого блока надо растягивать центр на оставшееся пространство (зависит от дизайна), то есть условие надо продлевать и на <div id="main">

на остальных страницах - будет правый блок Azn вечером попробую - отпишусь...

Спасибо!
Записан
Arina
Давно я тут
****

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

Пол: Женский
Сообщений: 203


« Ответ #191 : 07.09.2010, 14:02:57 »

Ребят, у кого есть код для вывода модуля ТОЛЬКО на Главной ? (у меня главная страница не frontpage, а "Категория / Блог"
Записан
SmokerMan
Профи
********

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

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



« Ответ #192 : 07.09.2010, 14:11:40 »

Ребят, у кого есть код для вывода модуля ТОЛЬКО на Главной ? (у меня главная страница не frontpage, а "Категория / Блог"
Azn а топик почитать никак нельзя?
Цитировать
7 – универсальный способ проверки на главную страницу
Записан
Arina
Давно я тут
****

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

Пол: Женский
Сообщений: 203


« Ответ #193 : 07.09.2010, 14:20:08 »

решила проблему вывода модуля только на главную страницу, вот код, пользуйтесь)))

<?php                                   
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault() && !JRequest::getInt('limitstart') && JRequest::getWord('layout') == 'blog') { ?>
<div id="mainmodules" class="spacer"><td class="main"><jdoc:include type="modules" name=" ЗДЕСЬ ВПИСАТЬ НАИМЕНОВАНИЕ МОДУЛЯ" style="main" /></td></div>
<?php } ?>
Записан
igoryk
Давно я тут
****

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

Сообщений: 227


« Ответ #194 : 08.09.2010, 10:33:10 »

на остальных страницах - будет правый блок Azn вечером попробую - отпишусь...

вроде проблема решилась - теперь правый блок выводится только при VirtueMart.

но проблема с переходом с главной страницы - осталась - не выводится правый блок -
ссылка с главной имеет вид -
xxx/index.php?option=com_virtuemart&page=shop.browse&category_id=236
xxx/index.php?option=com_virtuemart&page=shop.browse&category_id=236&Itemid=103

т.е. - когда присутствует &Itemid=xxx  правый блок выводится, а когда его нет - нет
Подскажите, как это побороть.
Записан
creative3d
Осваиваюсь на форуме
***

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

Сообщений: 65



« Ответ #195 : 09.09.2010, 15:24:10 »

Здравствуйте!
А какое нужно создать условие, чтобы часть текста на страничке была доступна только RSS-подписчикам?
P.S. Во вложении плагин от wordpress, который выполняет эту функцию, он очень маленький, может его можно легко переписать под Joomla?

* feedonly.txt (3.07 Кб - загружено 68 раз.)
Записан
Sergey_Live
Новичок
*

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

Сообщений: 4



« Ответ #196 : 14.09.2010, 09:48:39 »

Не могу преодолеть грабли((
как узнать id материала?
например при:
index.php?option=com_content&view=article&id=21
index.php?option=com_content&view=article&id=22
index.php?option=com_content&view=article&id=23
Пробывал GetDocument, но не работает(
то есть у меня есть 3 определенных новости с одной категорией com_content и 9 новостей другой категории этого же com_content.
 То есть проверка $option == 'com_content' && $view == 'article' срабатывает для всех новостей(
Может быть мне отследить категории? Но как не знаю (

мне нужно показывать определенный модуль, иначе - другой модуль.
ниже привожу пример с проверкой просмотра полной новости

if ($option == 'com_content' && $view == 'article')
    {?>
    
     <jdoc:include type="modules" name="position_for_support_in_kiev"/>
    
          
     <?php }else {?>

 <jdoc:include type="modules" name="position_for_package_overview"/>
« Последнее редактирование: 14.09.2010, 09:52:21 от Sergey_Live » Записан
beliyadm
Профи
********

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

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


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


« Ответ #197 : 14.09.2010, 10:02:24 »

как узнать id материала?
например при:
index.php?option=com_content&view=article&id=21
Вы читали первое сообщение этой темы?
Код
$articleID = JRequest::getInt( 'id', 1, 'get' );
Записан
effrit
Группа развития
*****

Репутация: +515/-5
Online Online

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


effrit.com


« Ответ #198 : 14.09.2010, 10:26:19 »

это всё для отрубленного SEF
для включённого
http://joomlaforum.ru/index.php?topic=95604.0
Записан
beliyadm
Профи
********

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

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


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


« Ответ #199 : 14.09.2010, 13:39:07 »

это всё для отрубленного SEF
для включённого
http://joomlaforum.ru/index.php?topic=95604.0
То есть у меня на всех сайтах с включенным стандартным СЕФ все не работает? Azn
Прекрасно работает и с включенным, параметры ведь передаются в любом случае
Записан
effrit
Группа развития
*****

Репутация: +515/-5
Online Online

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


effrit.com


« Ответ #200 : 14.09.2010, 13:41:18 »

beliyadm, а категории отслеживаются?
Записан
beliyadm
Профи
********

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

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


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


« Ответ #201 : 14.09.2010, 13:52:18 »

beliyadm, а категории отслеживаются?
Отслеживаются любые параметры, передаваемые в url, как в стандартных компонентах, так и в самописных, не знаю с чего решили про конфликт с SEF
Записан
effrit
Группа развития
*****

Репутация: +515/-5
Online Online

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


effrit.com


« Ответ #202 : 14.09.2010, 17:01:12 »

beliyadm, но реально не пашет определение категори при включении SEF. я сегодня проверял-нуль выдаёт.
Записан
beliyadm
Профи
********

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

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


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


« Ответ #203 : 14.09.2010, 17:48:53 »

beliyadm, но реально не пашет определение категори при включении SEF. я сегодня проверял-нуль выдаёт.
а если весь массив GET вывести на экран - в нем все будет кроме id категории?
Записан
effrit
Группа развития
*****

Репутация: +515/-5
Online Online

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


effrit.com


« Ответ #204 : 14.09.2010, 20:11:51 »

Код:
var_dump($_GET); //при отрубленном SEF
array(5) { ["option"]=>  string(11) "com_content" ["view"]=>  string(7) "article" ["id"]=>  string(21) "2:2010-09-12-10-07-59" ["catid"]=>  string(8) "1:mycat1" ["Itemid"]=>  NULL }

var_dump($_GET); //при включенном SEF
array(4) { ["option"]=>  string(11) "com_content" ["Itemid"]=>  NULL ["view"]=>  string(7) "article" ["id"]=>  string(21) "2:2010-09-12-10-07-59" }
Записан
SmokerMan
Профи
********

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

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



« Ответ #205 : 14.09.2010, 20:34:51 »

при виде материала насколько я помню не будет id категории.
Записан
effrit
Группа развития
*****

Репутация: +515/-5
Online Online

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


effrit.com


« Ответ #206 : 14.09.2010, 20:37:43 »

ну вот в посте выше оно и показано Azn. никаких ["catid"]=> в варианте с сефом просто нет
Записан
beliyadm
Профи
********

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

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


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


« Ответ #207 : 14.09.2010, 21:23:24 »

ну вот в посте выше оно и показано Azn. никаких ["catid"]=> в варианте с сефом просто нет
Так это потому, собственно, что при показе материала ссылка имеет вид (без сеф) мы имеем ссылку типа index.php?option=com_content&view=article&id=6&Itemid=12 где никакого параметра категории не передается, собственно вот в этом причина, вполне нормальное поведение. Я то говорил про получение параметра из УРЛ, а тут получать нечего, недопонимание вышло ))
В таком случае действительно, чтобы найти категорию придется делать запрос к базе через полученное значение ID материала
Записан
effrit
Группа развития
*****

Репутация: +515/-5
Online Online

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


effrit.com


« Ответ #208 : 14.09.2010, 21:47:55 »

)))
зато поговорили Azn
Записан
qwerty456
Захожу иногда
**

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

Сообщений: 20


« Ответ #209 : 18.09.2010, 23:05:51 »

не фиг дублировать посты. ты одну тему уже создал
UserXP.
« Последнее редактирование: 19.09.2010, 00:26:46 от userxp » Записан
igoryk
Давно я тут
****

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

Сообщений: 227


« Ответ #210 : 24.09.2010, 15:21:45 »

Господа, кто подскажет какое условие нужно прописать, чтобы левый блок отображался абсолютно везде, кроме VirtueMart ?
А то я что-то совсем запутался... Angry
Записан
Страниц: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | 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