0 Пользователей и 1 Гость просматривают эту тему.
  • 28 Ответов
  • 14253 Просмотров
*

UserAleks

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Подскажите как можно сменить CSS в зависимости от раздела, категории?
Для этого нужен модуль или силами движка можно организовать?

к примеру:
Новости 1 (рубрика 1) - css_1.css
Новости 2 (рубрика 2) - css_2.css
« Последнее редактирование: 19.08.2009, 00:45:10 от PaLyCH »
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
плясать от ItemID
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Adeptus

  • Завсегдатай
  • 1861
  • 219 / 15
Прочитайте мою статью "CSS on demand"
*

UserAleks

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Прочитайте мою статью "CSS on demand"
Нет это не то.
*

UserAleks

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
плясать от 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

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
почитайте эту тему http://joomlaforum.ru/index.php/topic,67278.0.html
а дальше - в индексе шаблона по ItemID подключать нужные CSS файлики в которых описывать изменение элементов, буквально на днях сделал сайт с 9-ю разными цветовыми схемами оформления
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Css сильно меняться будет? Есть вариант передавать параметр файлу /css/template.php а внутри этого файла организовать условия в зависимости от параметра.
Примерное начало этого файла такое
Код: php
<?php
header("Content-type: text/css") ;
echo file_get_contents("./reset.css");
?>
body {
font-family: Arial;
font-size:1em;
height: 100%;
}
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Показываю свое решение
Код: php
    //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 прописываю нужные элементы (картинки фона, цвет заголовков и прочее).
Ну и сверху грузится обычный файл шаблона для дефолтного оформления
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

UserAleks

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Пошел я по методу через $Itemid - не изобретая велосипеда, но используя templateDetails.xml
Вот что у меня получилось.

в templateDetails.xml создаю
Код: php
 <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 примерно получая
Код: php
css_1 = array (
 css_1, // название самого css
 12,122,234,324 // id меню
)

Ну а дальше все просто, использую код описанный выше лиш немного изменив его
Код: php
$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

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
А кто в курсе есть ли параметр в xml который дает привязку к меню?
чет такой не знаю и не могу найти.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
А кто в курсе есть ли параметр в xml который дает привязку к меню?
чет такой не знаю и не могу найти.

Да оно, как бы, само всегда справлялось, без параметра.
*

UserAleks

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

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Показываю свое решение
Код: php
    //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

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
У меня 1 стиль нужно применить к новостям,  2ой к портфолио (оба компонента), 3ий и 4ый к статическим страницам. Сработает ли такой вариант?
да сработает, если меню одного уровня - то нужно убрать SQL запрос (он лишний в таком случае) и в switch подставлять $Itemid
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Спасибо
Но я вот что-то не понял, выходит это нужно вставить в шаблон менюшки?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Спасибо
Но я вот что-то не понял, выходит это нужно вставить в шаблон менюшки?
нет, это в index.php шаблона до </head>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Понял, а как он будет согласоваться с меню? А если у меня 2 менюшки?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Понял, а как он будет согласоваться с меню? А если у меня 2 менюшки?
у каждого пункта меню свой ItemID, если пункты разных меню дублируют ссылки и имеют разные ID, но оформление должно быть одним - то в условии прописывать несколько ItemID
Код: php
case '1':
case '2':
echo '<link rel="stylesheet" href="/css/style123.css" type="text/css" />';
break;
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Все вкупил, буду пробовать
*

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Код индекса:
Код
<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

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Код
default:
echo '<link rel="stylesheet" href="'.$tplurl.'/css/template_default.css" type="text/css" />';
это для стилей по умолчанию
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Все хорошо, только
Код
$tplurl = '/templates/'.$document->template;  
не срабатывает, а именно $document->template  - получается
так
Код
<link rel="stylesheet" href="templates/css/template.css" type="text/css" />
Я сделал, написав полный путь, но для удобства не помешало бы это)
Спасибо большое за решение задачи
*

Rezet

  • Захожу иногда
  • 57
  • 1 / 0
Кто-нибудь пробовал реализовать такую штуку с включенным sh404SEF?
« Последнее редактирование: 07.08.2009, 09:42:06 от Rezet »
*

UserAleks

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Кто-нибудь пробовал реализовать такую штуку с включенным sh404SEF?
Да пробовал, проблем нет!

Господа, не очень разобрался:

исх код индекса у меня такой:

 <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

  • Осваиваюсь на форуме
  • 33
  • 1 / 0
beliyadm спасибо за это решение.

Только я эту строчку:
Код
$tplurl = '/templates/'.$document->template;  // полный путь к файлам шаблона в одной переменной для удобства

чуть видоизменил на:
Код
$tplurl = $this->baseurl.'/templates/'.$this->template;

потому как первый вариант не срабатывал.

у меня 10 цветовых схем и все работает ))
*

xabbep

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
Цитировать
//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

  • Осваиваюсь на форуме
  • 44
  • 0 / 1
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать вывод позиции модулей внутри компонента?

Автор Виталик

Ответов: 11
Просмотров: 9917
Последний ответ 11.08.2014, 05:16:59
от GapArchi
Сдвиг дивов в зависимости от масштаба страницы. Как пофиксить?

Автор Taatshi

Ответов: 4
Просмотров: 2358
Последний ответ 25.12.2011, 15:03:24
от dynamit
Как правильно разместить файлы компонента или модуля в папке HTML?

Автор kushiy

Ответов: 1
Просмотров: 2925
Последний ответ 28.10.2011, 13:17:29
от SmokerMan
Изменить отображение пункта меню, в зависимости от раздела сайта.

Автор clstl

Ответов: 1
Просмотров: 2274
Последний ответ 05.10.2011, 14:06:06
от zmancer
Вывод названия раздела.

Автор Mixxxa

Ответов: 24
Просмотров: 5162
Последний ответ 24.10.2010, 10:20:25
от effrit