UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« : 17.06.2009, 13:10:58 » |
|
Подскажите как можно сменить CSS в зависимости от раздела, категории? Для этого нужен модуль или силами движка можно организовать?
к примеру: Новости 1 (рубрика 1) - css_1.css Новости 2 (рубрика 2) - css_2.css
|
|
|
|
« Последнее редактирование: 19.08.2009, 00:45:10 от PaLyCH »
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #1 : 17.06.2009, 14:17:53 » |
|
плясать от ItemID
|
|
|
|
|
Записан
|
|
|
|
Adeptus
Разработчик расширений для Joomla 1.0
Репутация: +217/-14
Offline
Пол: 
Сообщений: 2273
|
 |
« Ответ #2 : 17.06.2009, 14:19:41 » |
|
Прочитайте мою статью "CSS on demand"
|
|
|
|
|
Записан
|
|
|
|
UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« Ответ #3 : 17.06.2009, 14:27:26 » |
|
|
|
|
|
|
Записан
|
|
|
|
UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« Ответ #4 : 17.06.2009, 14:31:33 » |
|
плясать от ItemID
Вот сюда нужно копать. Вот что я думаю: создать в templateDetails.xml например такие параметры <param name="css_1" type="text" default="" size="50" label="1.css" description="" /> <param name="css_2" type="text" default="" size="50" label="2.css" description="" /> Дать параметры разделов и возможно компнентв для каждого класса ну на примере привязать к меню Затем в шаблоне пхп отслеживать id и при совпадении выдавать css Но я чет не могу понять чем отследить эти id дело в том что прямого $_GET['ItemID'] у меня нет! - использую sh404SEF Вот вопрос как мне определить системной функцией этот ItemID
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #5 : 17.06.2009, 14:34:41 » |
|
почитайте эту тему http://joomlaforum.ru/index.php/topic,67278.0.htmlа дальше - в индексе шаблона по ItemID подключать нужные CSS файлики в которых описывать изменение элементов, буквально на днях сделал сайт с 9-ю разными цветовыми схемами оформления
|
|
|
|
|
Записан
|
|
|
|
voland
JComments Tester
Репутация: +158/-17
Online
Пол: 
Сообщений: 2695
любит наш народ всякое гавно...
|
 |
« Ответ #6 : 17.06.2009, 14:38:25 » |
|
Css сильно меняться будет? Есть вариант передавать параметр файлу /css/template. php а внутри этого файла организовать условия в зависимости от параметра. Примерное начало этого файла такое <?php header("Content-type: text/css") ; echo file_get_contents("./reset.css"); ?> body { font-family: Arial; font-size:1em; height: 100%; }
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #7 : 17.06.2009, 14:44:52 » |
|
Показываю свое решение //include different style css by ItemID $tplurl = '/templates/'.$document->template; // полный путь к файлам шаблона в одной переменной для удобства $Itemid = JRequest::getInt( 'Itemid', 9, 'get' ); // получили текущий ItemID $db = & JFactory::getDBO(); $query = 'SELECT parent FROM #__menu WHERE id = '.$Itemid.' AND published = 1 '; //у меня необходимо было работать и с дочерними пунктами меню и оставлять правильную цветовую гамму, потому одним запросов проверяю на родителя $db->setQuery($query); $curiyemid = $db->loadResult(); if ($curiyemid == '0') { $curiyemid = $Itemid; } else { } switch ($curiyemid) { case '1'; //1 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style1.css" type="text/css" />'; break; case '2'; //3 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style2.css" type="text/css" />'; break; case '3'; //4 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style3.css" type="text/css" />'; break; case '4'; //5 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style4.css" type="text/css" />'; break; case '5'; //6 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style5.css" type="text/css" />'; break; case '6';//7 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style6.css" type="text/css" />'; break; case '7';//8 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style7.css" type="text/css" />'; break; case '8';//8 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style8.css" type="text/css" />'; break; default: //$curstyle = 'style_default'; break; } И в каждом style1-8.css прописываю нужные элементы (картинки фона, цвет заголовков и прочее). Ну и сверху грузится обычный файл шаблона для дефолтного оформления
|
|
|
|
|
Записан
|
|
|
|
UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« Ответ #8 : 18.06.2009, 07:43:54 » |
|
Пошел я по методу через $Itemid - не изобретая велосипеда, но используя templateDetails.xml Вот что у меня получилось. в templateDetails.xml создаю <params> <param name="css_1" type="text" default="" size="50" label="" description="" /> <param name="css_2" type="text" default="" size="50" label="" description="" /> </params> тут понятно создаю input форму и перечисляю разделы для css примерно получая css_1 = array ( css_1, // название самого css 12,122,234,324 // id меню ) Ну а дальше все просто, использую код описанный выше лиш немного изменив его $Itemid = JRequest::getInt( 'Itemid', 0, 'get' ); $cssName = 'default_'; if(isset($this->params->_registry['_default']['data']->css_1)){ $css['0'] = explode(",", $this->params->_registry['_default']['data']->css_1); } if(isset($this->params->_registry['_default']['data']->css_2)){ $css['1'] = explode(",", $this->params->_registry['_default']['data']->css_2); } for($i='0';$i<count($css);$i++){ if (in_array ($Itemid, $css[$i])) { $cssName = $css[$i]['0']; break; } } <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/bill_osnov/css/<?php echo $cssName; ?>template.css" type="text/css" /> Данный метод хорош тем, что все можно настраивать через админку. Всем спасибо.
|
|
|
|
« Последнее редактирование: 18.06.2009, 07:48:08 от UserAleks »
|
Записан
|
|
|
|
UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« Ответ #9 : 18.06.2009, 09:11:53 » |
|
А кто в курсе есть ли параметр в xml который дает привязку к меню? чет такой не знаю и не могу найти.
|
|
|
|
|
Записан
|
|
|
|
|
VETERINAR
|
 |
« Ответ #10 : 18.06.2009, 10:06:20 » |
|
А кто в курсе есть ли параметр в xml который дает привязку к меню? чет такой не знаю и не могу найти.
Да оно, как бы, само всегда справлялось, без параметра.
|
|
|
|
|
Записан
|
|
|
|
UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« Ответ #11 : 19.06.2009, 07:45:25 » |
|
Да оно, как бы, само всегда справлялось, без параметра.
Немного меня не поняли по умолчанию в шаблоне есть пункт привязать шаблон к меню. Так вот я хотел если это возможно отобразить такое же меню в параметрах шаблона.
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #12 : 30.06.2009, 13:46:56 » |
|
Показываю свое решение //include different style css by ItemID $tplurl = '/templates/'.$document->template; // полный путь к файлам шаблона в одной переменной для удобства $Itemid = JRequest::getInt( 'Itemid', 9, 'get' ); // получили текущий ItemID $db = & JFactory::getDBO(); $query = 'SELECT parent FROM #__menu WHERE id = '.$Itemid.' AND published = 1 '; //у меня необходимо было работать и с дочерними пунктами меню и оставлять правильную цветовую гамму, потому одним запросов проверяю на родителя $db->setQuery($query); $curiyemid = $db->loadResult(); if ($curiyemid == '0') { $curiyemid = $Itemid; } else { } switch ($curiyemid) { case '1'; //1 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style1.css" type="text/css" />'; break; case '2'; //3 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style2.css" type="text/css" />'; break; case '3'; //4 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style3.css" type="text/css" />'; break; case '4'; //5 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style4.css" type="text/css" />'; break; case '5'; //6 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style5.css" type="text/css" />'; break; case '6';//7 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style6.css" type="text/css" />'; break; case '7';//8 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style7.css" type="text/css" />'; break; case '8';//8 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style8.css" type="text/css" />'; break; default: //$curstyle = 'style_default'; break; } И в каждом style1-8.css прописываю нужные элементы (картинки фона, цвет заголовков и прочее). Ну и сверху грузится обычный файл шаблона для дефолтного оформления У меня 1 стиль нужно применить к новостям, 2ой к портфолио (оба компонента), 3ий и 4ый к статическим страницам. Сработает ли такой вариант?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #13 : 30.06.2009, 13:48:29 » |
|
У меня 1 стиль нужно применить к новостям, 2ой к портфолио (оба компонента), 3ий и 4ый к статическим страницам. Сработает ли такой вариант?
да сработает, если меню одного уровня - то нужно убрать SQL запрос (он лишний в таком случае) и в switch подставлять $Itemid
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #14 : 30.06.2009, 13:57:51 » |
|
Спасибо Но я вот что-то не понял, выходит это нужно вставить в шаблон менюшки?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #15 : 30.06.2009, 14:04:47 » |
|
Спасибо Но я вот что-то не понял, выходит это нужно вставить в шаблон менюшки?
нет, это в index.php шаблона до </head>
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #16 : 30.06.2009, 14:23:49 » |
|
Понял, а как он будет согласоваться с меню? А если у меня 2 менюшки?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #17 : 30.06.2009, 14:26:08 » |
|
Понял, а как он будет согласоваться с меню? А если у меня 2 менюшки?
у каждого пункта меню свой ItemID, если пункты разных меню дублируют ссылки и имеют разные ID, но оформление должно быть одним - то в условии прописывать несколько ItemID case '1': case '2': echo '<link rel="stylesheet" href="/css/style123.css" type="text/css" />'; break;
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #18 : 30.06.2009, 14:29:10 » |
|
Все вкупил, буду пробовать
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #19 : 01.07.2009, 09:25:49 » |
|
Код индекса: <head> <jdoc:include type="head" />
<link rel="stylesheet" href="templates/rez_design/css/template.css" type="text/css" /> <?php $tplurl = '/templates/'.$document->template; // полный путь к файлам шаблона в одной переменной для удобства $Itemid = JRequest::getInt( 'Itemid', 9, 'get' ); // получили текущий ItemID switch ($Itemid) { case '173'; //3 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/template_orange.css" type="text/css" />'; break; case '174'; //4 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/template_green.css" type="text/css" />'; break; case '175'; //5 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/template_purple.css" type="text/css" />'; break; default: //$curstyle = 'style_default'; break; } ?> </head>
Пункты меню у меня 172-175, для 172 у меня будет применяться стандартный css, понимаю что <link rel="stylesheet" href="templates/rez_design/css/template.css" type="text/css" /> не на своем месте, походу его нужно в case запихать, после 'default:', уже и echo туда писал и тп), не пойму как 
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #20 : 01.07.2009, 19:40:57 » |
|
default: echo '<link rel="stylesheet" href="'.$tplurl.'/css/template_default.css" type="text/css" />'; это для стилей по умолчанию
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #21 : 03.07.2009, 09:31:13 » |
|
Все хорошо, только $tplurl = '/templates/'.$document->template; не срабатывает, а именно $document->template - получается так <link rel="stylesheet" href="templates/css/template.css" type="text/css" /> Я сделал, написав полный путь, но для удобства не помешало бы это) Спасибо большое за решение задачи
|
|
|
|
|
Записан
|
|
|
|
Rezet
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 57
|
 |
« Ответ #22 : 07.08.2009, 09:32:19 » |
|
Кто-нибудь пробовал реализовать такую штуку с включенным sh404SEF?
|
|
|
|
« Последнее редактирование: 07.08.2009, 09:42:06 от Rezet »
|
Записан
|
|
|
|
UserAleks
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 33
|
 |
« Ответ #23 : 17.08.2009, 08:04:10 » |
|
Кто-нибудь пробовал реализовать такую штуку с включенным sh404SEF?
Да пробовал, проблем нет!
|
|
|
|
|
Записан
|
|
|
|
|
darklumen
Гость
|
 |
« Ответ #24 : 28.01.2010, 17:19:19 » |
|
Господа, не очень разобрался:
исх код индекса у меня такой:
<head> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <jdoc:include type="head" /> <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/system.css" type="text/css" /> <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.css" />
<!--[if IE 6]><link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.ie6.css" type="text/css" media="screen" /><![endif]--> <script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/script.js"></script>
</head>
добавляю написанный выше код:
<head> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <jdoc:include type="head" /> <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/system.css" type="text/css" /> <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.css" />
<?php $tplurl = '/templates/'.$document->template; // полный путь к файлам шаблона в одной переменной для удобства $Itemid = JRequest::getInt( 'Itemid', 9, 'get' ); // получили текущий ItemID switch ($Itemid) { case '99'; echo '<link rel="stylesheet" href="'.$tplurl.'/css/style2.css" type="text/css" />'; break; case '101'; echo '<link rel="stylesheet" href="'.$tplurl.'/css/style2.css" type="text/css" />'; break; case '102'; echo '<link rel="stylesheet" href="'.$tplurl.'/css/style2.css" type="text/css" />'; break; } ?>
<!--[if IE 6]><link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.ie6.css" type="text/css" media="screen" /><![endif]--> <script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/script.js"></script>
</head>
но стили на определенных пунктах меню не меняются. Помогите разобраться. =)
|
|
|
|
|
Записан
|
|
|
|
shareef
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Пол: 
Сообщений: 43
|
 |
« Ответ #25 : 24.01.2011, 12:48:25 » |
|
beliyadm спасибо за это решение. Только я эту строчку: $tplurl = '/templates/'.$document->template; // полный путь к файлам шаблона в одной переменной для удобства чуть видоизменил на: $tplurl = $this->baseurl.'/templates/'.$this->template; потому как первый вариант не срабатывал. у меня 10 цветовых схем и все работает ))
|
|
|
|
|
Записан
|
|
|
|
xabbep
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Пол: 
Сообщений: 35
|
 |
« Ответ #26 : 11.05.2012, 02:03:29 » |
|
//include different style CSS by ItemID $tplurl = '/templates/'.$document->template; // полный путь к файлам шаблона в одной переменной для удобства $Itemid = JRequest::getInt( 'Itemid', 9, 'get' ); // получили текущий ItemID $db = & JFactory::getDBO(); $query = 'SELECT parent FROM #__menu WHERE id = '.$Itemid.' AND published = 1 '; //у меня необходимо было работать и с дочерними пунктами меню и оставлять правильную цветовую гамму, потому одним запросов проверяю на родителя $db->setQuery($query); $curiyemid = $db->loadResult(); if ($curiyemid == '0') { $curiyemid = $Itemid; } else { } switch ($curiyemid) { case '1'; //1 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style1.css" type="text/css" />'; break; case '2'; //3 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style2.css" type="text/css" />'; break; case '3'; //4 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style3.css" type="text/css" />'; break; case '4'; //5 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style4.css" type="text/css" />'; break; case '5'; //6 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style5.css" type="text/css" />'; break; case '6';//7 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style6.css" type="text/css" />'; break; case '7';//8 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style7.css" type="text/css" />'; break; case '8';//8 img link echo '<link rel="stylesheet" href="'.$tplurl.'/css/style8.css" type="text/css" />'; break; default: //$curstyle = 'style_default'; break; }
Подскажите, а данный пример будет работать на J2.5 ? Вставил данный код в свой index.php, указал нужные мне ID, создал отдельные CSS, но ничего не поменялось  Что делаю не так ?
|
|
|
|
« Последнее редактирование: 11.05.2012, 02:42:05 от xabbep »
|
Записан
|
|
|
|
|
|
xabbep
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Пол: 
Сообщений: 35
|
 |
« Ответ #28 : 11.05.2012, 03:22:23 » |
|
Спасибо! 
|
|
|
|
|
Записан
|
|
|
|
|