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

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

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

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


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


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

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

Сообщений: 12


« Ответ #91 : 19.05.2010, 20:38:51 »

я же русским языком написал - что это _пример_.
......
вы хтмл на каком уровне знаете?
Как то Вы зло отвечаете.
На слабом уровне! мне только 30 мая будет 15 лет
Записан
Nibiru
Захожу иногда
**

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

Сообщений: 12


« Ответ #92 : 19.05.2010, 20:49:52 »

так оно и не обязано быть таким, собссно.
код приведен для примера и отличаться может на +/- километр
зы. для кого даны ссылки?
[howto] Создание шаблона для Joomla! 1.5
где то умом понимаю, что это наверное здесь:
Код
</div>
<div class="content">
<?php if ($this->countModules('breadcrumb') || artxHasMessages()) : ?>
<div class="Post">
   <div class="Post-body">
<div class="Post-inner">
<div class="PostContent">
<jdoc:include type="modules" name="breadcrumb" />
<jdoc:include type="message" />
 
</div>

но не могу понять, что добавить и куда именно. А то, что Вы дали -  Этот мануал для тех кто уже делал шаблоны для Joomla! 1.0.x

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

Репутация: +400/-6
Online Online

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


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


« Ответ #93 : 19.05.2010, 21:59:38 »

эт мануал для тех, что знает HTML
Записан
Nibiru
Захожу иногда
**

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

Сообщений: 12


« Ответ #94 : 19.05.2010, 22:13:50 »

Легче всего послать куда то, а я прошу подсказать, что и где добавить в конкретном шаблоне! Если кто знает и не "сидит на умнике" помогите пожалуйста!
Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #95 : 19.05.2010, 22:42:35 »

Когда ты в школе получаешь (или щас их покупают?) учебники, ты учителям тоже говоришь - зачем вы меня куда-то посылаете? лучше на пальцах покажите!
а?
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #96 : 19.05.2010, 22:52:35 »

блин, задолбали претензионные индивиды. плати деньги, если вникать не хочешь.
тут даже не на пальцах, а "сделайте мою домашку, вы же-учитель, должны знать!"
Записан
Nibiru
Захожу иногда
**

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

Сообщений: 12


« Ответ #97 : 19.05.2010, 23:13:59 »

Павел, да всё я там прочитал, конкретно нет, я пробовал по разному делать и не выходит. и к учителю можно подойти и попросить показать как! effrit  - крутой мен... всё за деньги, а когда юзать Joomla только начинал так всем платил чтоли? сомневаюсь, что в 14 лет умел то, что я умею! Злые вы.... Как вы со своими детьми общаетесь или до них то же дела нет?
Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #98 : 19.05.2010, 23:15:52 »

тыв хоть скажи, что конекретно у тебя не выходит?
у тебя задача какая? что сделать надо?
пока я вижу, что ты пытаешься найти код из примера.

показывай задачу : )))
Записан
Nibiru
Захожу иногда
**

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

Сообщений: 12


« Ответ #99 : 19.05.2010, 23:19:18 »

надо, что бы когда не включены правые менюшки текст был до конца, а не обрезался как будто они там есть
Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #100 : 19.05.2010, 23:28:06 »

В топике именно это условие и имеется.
leftcolumn - левая колонка, centercolumn - центральная, rightcolumn - правая.

<?php if($this->countModules('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; ?>
Записан
Alldar
Тестеры
*****

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

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



« Ответ #101 : 19.05.2010, 23:31:33 »

Nibiru, а чего ты ждал? Полез колупатся в CMS даже не зная HTML?! Я тебе гарантирую что все кто тебе сегодня отвечал тут сначала учились делать сайты в блокноте на обычном HTML + в лучшем случаем CSS.

Ну попробуй почитай вот это http://habrahabr.ru/blogs/joomla_cms/41213/

Хотя выше в принципе понятно что происходит
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #102 : 19.05.2010, 23:45:49 »

Nibiru, то что тебе 14 лет ровно ничего не значит.
в особенности, что кто-то должен за тебя делать то, что надо исключительно ТЕБЕ.
чего ты хотел? исправить шаблон , не зная хтмл?
я вот не умею водить и поэтому НЕ ПОКУПАЮ СЕБЕ АВТОМОБИЛЬ.
если бы хотел - пошёл бы ПОУЧИЛСЯ. а потом бы сел за руль.
а ты хочешь не зная основ сесть и поехать.
а минус свой засунь себе...
таким идиотам помогать ВООБЩЕ не хочется
Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #103 : 19.05.2010, 23:49:17 »

effrit : ))) а ты ему тоже минус влепил : ))))))))))
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #104 : 19.05.2010, 23:51:05 »

PashkaRu, чтобы он себе сразу 2 засунул.
неполиткорректно, но таких надо в шею гнать.
ибо они портят карму тем, кто отвечает на форуме. пусть вырастет, а потом приходит.
Записан
PashkaRu
JComments Tester
*

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

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


Дедушка Игнат, изыди ((((


« Ответ #105 : 19.05.2010, 23:54:28 »

да лана, фигня какая : )
надо модеров позвать почистить тут все : ))
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #106 : 19.05.2010, 23:55:43 »

с "почистить"-согласен
Записан
Nibiru
Захожу иногда
**

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

Сообщений: 12


« Ответ #107 : 20.05.2010, 00:30:15 »

PashkaRu я знаю какое условие отвечает и в других шаблонах не было проблем, а в этом проблемы. говорю же что в index.php нет этого.
Alldar  я сделал не 1 сайт и начинал учиться на php форумах. Почему то в 20 шаблонах получилось а тут нивкакую!
Записан
Alldar
Тестеры
*****

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

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



« Ответ #108 : 20.05.2010, 01:24:59 »

Потому что вы не понимаете принципа работы не важно сколько вы сделали сайтов, почитайте тот мануал что я вам дал по ссылке
Записан
Nibiru
Захожу иногда
**

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

Сообщений: 12


« Ответ #109 : 20.05.2010, 07:06:18 »

Потому что вы не понимаете принципа работы не важно сколько вы сделали сайтов, почитайте тот мануал что я вам дал по ссылке
Прочитал от начала и до конца! Благодарю, интересная статья, но там нет того, что мне нужно!
Записан
bozhkov
Осваиваюсь на форуме
***

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

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



« Ответ #110 : 20.05.2010, 21:59:24 »

А можно запостить код скрытия пункта меню при условии, что юзер залогинился?
« Последнее редактирование: 20.05.2010, 22:05:15 от bozhkov » Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #111 : 20.05.2010, 22:13:05 »

модуль меню и его внутренности никакого отношения к шаблону не имеют.
можно не показывать позицию модуля, т.е скрывать модуль целиком.
т.е. если вынесешь свой пункт в отдельное меню, то можно будет его скрыть для залогиненного юзера
Записан
bozhkov
Осваиваюсь на форуме
***

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

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



« Ответ #112 : 20.05.2010, 23:27:27 »

Вынесение пункта меню в отдельный модуль? Некрасиво ;(
Меню: пункт1 пункт2 пункт3
Нужно скрыть пункт2
Получается, что нужно лепить три модуля - для 1 пункта, для второго (с условием) и третьего.

Может логичнее сделать два модуля? Один - пункт1 пункт2 пункт3, и второй - пункт1 пункт3 и выводить их по условию, что юзер залогинился?

В любом случае мне нужен код, как вывести модуль по условию логина - самому мне это не осилить ;(
Записан
effrit
Группа развития
*****

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

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


effrit.com


« Ответ #113 : 20.05.2010, 23:40:50 »

ну так в 4-ом примере из темы как раз оно и есть
Записан
bozhkov
Осваиваюсь на форуме
***

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

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



« Ответ #114 : 21.05.2010, 14:54:47 »

не совсем

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

хочу с помощью примерно такой конструкции менять модули в зависимости от залогиненный/незалогиненный

Код
<?php
switch ($this->getlanguage()){
case 'ru-ru':?>
<jdoc:include type="modules" name="top_menu_non_login" />
<?php
break;
case 'en-gb':?>
<jdoc:include type="modules" name="top_menu_login" />
<?php
break;
}
?>
 

только не знаю, что должно быть вместо getlanguage, ru-ru и en-gb

Вобщем - "так какую кнопку мне нажимать, чтобы домой вернуться?" (кин-дза-дза)


Записан
bzzik
JComments Tester
*

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

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


Contra Gaming Community


« Ответ #115 : 21.05.2010, 14:57:58 »

Тогда проверка на залогиненного/гостя такая:

Код
$user = &JFactory::getUser();
if ($user->quest) //если гость
{
показываем модуль
}
Записан
bozhkov
Осваиваюсь на форуме
***

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

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



« Ответ #116 : 21.05.2010, 15:02:12 »

так?
Код
<?php
$user = &JFactory::getUser();{
if ($user->quest):?>
<jdoc:include type="modules" name="top_menu_non_login" />
<?php
if ($user->login):?>
<jdoc:include type="modules" name="top_menu_login" />
<?php
}
?>
 
Записан
bzzik
JComments Tester
*

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

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


Contra Gaming Community


« Ответ #117 : 21.05.2010, 15:05:56 »

Вот так:
Код
<?php
$user = &JFactory::getUser();
 
if ($user->quest): ?>
<jdoc:include type="modules" name="top_menu_non_login" />
<?php else: ?>
<jdoc:include type="modules" name="top_menu_login" />
<?php endif; ?>
 

[/quote]
Записан
bozhkov
Осваиваюсь на форуме
***

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

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



« Ответ #118 : 21.05.2010, 15:22:05 »

О! Почти заработало Wink)
Только теперь показывает только тот модуль, который указан в 4-ой строчке, а тот, который в 6-ой - не показывает - фиолетово ему, залогинился юзер или нет ;(
Чего-то видно в коде не хватает ;(
Записан
bozhkov
Осваиваюсь на форуме
***

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

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



« Ответ #119 : 21.05.2010, 16:04:59 »

У меня юзер логинится не через стандартный модуль, а через CB Login Community Builder-а - может в этом дело?
Записан
bzzik
JComments Tester
*

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

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


Contra Gaming Community


« Ответ #120 : 21.05.2010, 16:15:02 »

У меня юзер логинится не через стандартный модуль, а через CB Login Community Builder-а - может в этом дело?
Нет, я просто в букве ошибся в одной:
$user->quest поменяйте на $user->guest

Azn
Записан
Страниц: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@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