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

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Смена CSS в зависимости от раздела, компонента и т.д.  (Прочитано 4794 раз)
0 Пользователей и 1 Гость смотрят эту тему.
UserAleks
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline 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
Профи
********

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

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


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


« Ответ #1 : 17.06.2009, 14:17:53 »

плясать от ItemID
Записан
Adeptus
Разработчик расширений для Joomla 1.0
*

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

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



« Ответ #2 : 17.06.2009, 14:19:41 »

Прочитайте мою статью "CSS on demand"
Записан
UserAleks
Осваиваюсь на форуме
***

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

Сообщений: 33


« Ответ #3 : 17.06.2009, 14:27:26 »

Прочитайте мою статью "CSS on demand"
Нет это не то.
Записан
UserAleks
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline 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
Профи
********

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

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


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


« Ответ #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 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
Профи
********

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

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


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


« Ответ #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 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 Offline

Сообщений: 33


« Ответ #9 : 18.06.2009, 09:11:53 »

А кто в курсе есть ли параметр в xml который дает привязку к меню?
чет такой не знаю и не могу найти.
Записан
VETERINAR
Живу я здесь
******

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

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


Kiss my shiny metal ass!


« Ответ #10 : 18.06.2009, 10:06:20 »

А кто в курсе есть ли параметр в xml который дает привязку к меню?
чет такой не знаю и не могу найти.

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

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

Сообщений: 33


« Ответ #11 : 19.06.2009, 07:45:25 »

Да оно, как бы, само всегда справлялось, без параметра.
Немного меня не поняли по умолчанию в шаблоне есть пункт привязать шаблон к меню.
Так вот я хотел если это возможно отобразить такое же меню в параметрах шаблона.
Записан
Rezet
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline 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
Профи
********

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

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


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


« Ответ #13 : 30.06.2009, 13:48:29 »

У меня 1 стиль нужно применить к новостям,  2ой к портфолио (оба компонента), 3ий и 4ый к статическим страницам. Сработает ли такой вариант?
да сработает, если меню одного уровня - то нужно убрать SQL запрос (он лишний в таком случае) и в switch подставлять $Itemid
Записан
Rezet
Осваиваюсь на форуме
***

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

Сообщений: 57


« Ответ #14 : 30.06.2009, 13:57:51 »

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

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

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


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


« Ответ #15 : 30.06.2009, 14:04:47 »

Спасибо
Но я вот что-то не понял, выходит это нужно вставить в шаблон менюшки?
нет, это в index.php шаблона до </head>
Записан
Rezet
Осваиваюсь на форуме
***

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

Сообщений: 57


« Ответ #16 : 30.06.2009, 14:23:49 »

Понял, а как он будет согласоваться с меню? А если у меня 2 менюшки?
Записан
beliyadm
Профи
********

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

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


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


« Ответ #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 Offline

Сообщений: 57


« Ответ #18 : 30.06.2009, 14:29:10 »

Все вкупил, буду пробовать
Записан
Rezet
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline 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 туда писал и тп), не пойму как  Sad
Записан
beliyadm
Профи
********

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

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


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


« Ответ #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 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 Offline

Сообщений: 57


« Ответ #22 : 07.08.2009, 09:32:19 »

Кто-нибудь пробовал реализовать такую штуку с включенным sh404SEF?
« Последнее редактирование: 07.08.2009, 09:42:06 от Rezet » Записан
UserAleks
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline 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 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 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, но ничего не поменялось Sad Что делаю не так ?
« Последнее редактирование: 11.05.2012, 02:42:05 от xabbep » Записан
Poznakomlus
Живу я здесь
******

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

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


Дядя Федор приехал!


« Ответ #27 : 11.05.2012, 02:08:03 »

CSS-класс страницы
Это решение лучше для 2.5
Записан
xabbep
Осваиваюсь на форуме
***

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

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



« Ответ #28 : 11.05.2012, 03:22:23 »

CSS-класс страницы
Это решение лучше для 2.5

Спасибо! Azn
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

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