Определение того, какой раздел просматривается - PullRequest
0 голосов
/ 30 апреля 2009

Ребята, я пытаюсь реализовать элементарную функцию в Joomla, но мне не повезло, и я обдумал это.

Мой клиент имеет настройку Joomla с несколькими разделами; каждый раздел имеет свои собственные категории и, в конце концов, содержание под ним.

Мне нужно, чтобы в каждом разделе был немного другой цветовой компонент (например, раздел A и все его дочерние страницы красным, раздел B - синим и т. Д.); определенные границы и фоны должны быть уникальными в соответствии с каждым разделом.

У меня есть одна тема, которая используется всеми разделами. Где-то в файле темы мне нужно определить, в каком разделе я нахожусь, и на основании этого установить соответствующую переменную css:

<html>
    <body class="cars-section">

    </body>
</html>

Все, что мне нужно, это установить класс моего тела в нужную секцию, и все мои раскраски настроены на магическую работу.

Есть идеи, как это можно сделать в мире Joomla? Есть ли другой способ сделать такую ​​вещь.

Ответы [ 2 ]

1 голос
/ 21 мая 2009

Вам необходимо выбрать ID раздела из запроса.

Используйте это, чтобы получить соответствующие переменные запроса:

<?php
$option = JRequest::getWord('option', null);
$view = JRequest::getWord('view', null);
$idalias = JRequest::getVar('id', null);
if (strpos($idalias, ":") != false) {
    $idandalias = explode(":", $idalias);
    $id = $idandalias[0];
} else {
    $id = JRequest::getInt ('id' , 0);
}

Затем используйте что-то вроде этого, чтобы увидеть, в каком разделе вы находитесь, если вы находитесь на странице раздела:

if ( $option=="com_content" && $view=="section" ) {
  $sectid = $id;
}

На страницах разделов вы можете просто использовать запрос, но на других страницах вам также необходимо выполнить запрос к базе данных:

else {
  $database =& JFactory::getDBO();
  if ( $option=="com_content" && $view=="category" ) {
    $query = "SELECT section FROM jos_categories WHERE id=$id";
  }
  if ( $option=="com_content" && $view=="article" } {
    $query = "SELECT sectionid FROM jos_content WHERE id=$id";
  }
  $database->setQuery($query);
  $sectid = $database->loadResult();
}

Если у вас есть идентификатор раздела, вы можете использовать его для установки и вставки нужного класса.

if ( $sectid == '3' ) {
  $my_cars_section_class = 'three';
}
?>
<body class="<?php echo $my_cars_section_class; ?>">

Нечто подобное должно делать это.

0 голосов
/ 30 апреля 2009

Существует несколько способов достижения css-классификации тела:

  1. Использовать систему суффиксов классов страницы меню Joomla.
  2. Вывод класса на основе выбранной ссылки меню из шаблона. Конечно, если вы планируете это сделать, вам нужно немного изменить шаблон.

    $ menu = & JSite :: getMenu ();
    $ active = $ menu-> getActive ();
    alias) echo 'class = "'. $ active-> alias. '"'? >>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...