Форум русской поддержки Joomla!® CMS
28.06.2017, 16:22:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

получить ID материала, категории, раздела в шаблоне

 (Прочитано 13714 раз)
0 Пользователей и 1 Гость смотрят эту тему.
e-life
Осваиваюсь на форуме
***

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

Сообщений: 26


« : 10.01.2010, 12:41:30 »

Задача такая - есть несколько разделов на сайте.
Я хочу в зависимости от раздела вывести определенные картинки.

Нужно сделать это в шаблоне - в зависимости от текущего раздела вывести соответствующий кусок HTML.

На данный момент имею вот что:
ИД материала получаю через $menu = & JSite::getMenu(); далее через запрос в БД получаю ИД раздела.
Но это работает только если текущий материал есть в меню, а если сделать пункт меню категории (новости) и перейти на страницу новости, то этой страницы уже нет в меню.

То, что находил тут и вообще в инете не устроило. Так и не смог найти как получить ИД материала, категории и раздела прямо в шаблоне.
Записан
shprota
Разработчик расширений для Joomla 1.5
*

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

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


Тружусь, не покладая рук


« Ответ #1 : 10.01.2010, 12:53:40 »

Не надо в меню лазать. Все получается прямо из запроса.
Нечто вроде такого:
Код
$option = JRequest::getString('option');
if($option == 'com_content')
{
 $cid = JRequest::getInt('catid');
 $id = JRequest::getInt('id');
}
Записан
e-life
Осваиваюсь на форуме
***

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

Сообщений: 26


« Ответ #2 : 10.01.2010, 13:25:43 »

$cid = JRequest::getInt('catid'); - это ИД категории?
выдает 0.
И всетаки - как получить ИД раздела, скажем на странице со списком новостей, т.е. на странице категории?

Приведенный пример нерабочий. Кто сможет привести более внятный ответ. Думаю вопрос довольно конкретный задал.
« Последнее редактирование: 10.01.2010, 16:04:18 от e-life » Записан
e-life
Осваиваюсь на форуме
***

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

Сообщений: 26


« Ответ #3 : 10.01.2010, 19:40:15 »

тут http://forum.joomla.org/viewtopic.php?f=466&t=302292
нашел вот такое решение:
Код:
function getSection($iId) {
      $database = &JFactory::getDBO();
      if(JRequest::getVar( 'view', 'NONE') == "frontpage"){
         return 1;
      }else if(JRequest::getVar( 'view', 'NONE') == "section"){
         return JRequest::getVar( 'id', 'NONE');
      }else if(Jrequest::getVar( 'view', 'NONE') == "category"){
         //echo 'hit category';
         $sql = "SELECT section FROM #__categories WHERE id = $iId ";
         $database->setQuery( $sql );
         $row=$database->loadResult();
         return $row;
      }else if(Jrequest::getVar( 'view', 'NONE') == "article"){
         //echo 'hit article';
         $sql = "SELECT sectionid FROM #__content WHERE id = $iId ";
         $database->setQuery( $sql );
         $row=$database->loadResult();
         return $row;
      }
   }
   $sectionID=getSection(JRequest::getInt('id', 'NONE'));

здесь я его немного подправил, чтобы на главной странице выдавало первый раздел.

ПС пока что вроде решение устраивает, но, думаю, что в дальнейшем понадобится больше разбираться в этом вопросе.
Записан
SmokerMan
Профи
********

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

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



« Ответ #4 : 11.01.2010, 02:18:31 »

Azn оригинальное решение. Делать лишний запрос к БД.
Хотя поторопился. Почитал тему думал id материала только нужно.
Записан
archer1981
Давно я тут
****

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

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



« Ответ #5 : 30.01.2010, 01:09:36 »

Нужно решить именно такую задачу. Как при помощи означенной функции в условие вносить id категории?
Записан
4Fun
Захожу иногда
**

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

Сообщений: 15


« Ответ #6 : 30.01.2010, 15:15:12 »

Сейчас мучаюсь, нужно получить id категории
вырос вот такой код, но он не работает если мы включаем ЧПУ, это из-за того что там не передаётся catid.
Код
$id=JRequest::getVar( 'id','' );
$catid=JRequest::getVar( 'catid','' );
$this->params->catid=$id;
if ($catid)
{$this->params->catid=$catid;}
else
{$this->params->catid=$id;}
 
Записан
4Fun
Захожу иногда
**

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

Сообщений: 15


« Ответ #7 : 30.01.2010, 15:46:12 »

Вот кстати финальная версия. Принцып работы очень прост, что позволяет работать даже с ЧПУ.
При желании её несложно доработать..
Код
	$id=JRequest::getVar( 'id','' );
if (JRequest::getVar('view')=='category')
{$this->params->catid=$id;}
if (JRequest::getVar('view')=='article') {
        $sql = "SELECT catid FROM #__content WHERE id = .$database->Quote($id) ";
        $database->setQuery( $sql );
        echo($database->loadResult());
}
 
Записан
SmokerMan
Профи
********

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

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



« Ответ #8 : 30.01.2010, 17:30:31 »

Сейчас мучаюсь, нужно получить id категории
вырос вот такой код, но он не работает если мы включаем ЧПУ, это из-за того что там не передаётся catid.
это как, не передается? Azn
Цитировать
{$this->params->catid=$id;}
вообще не понятная строчка. Чего этим хотели добиться?
Записан
SmokerMan
Профи
********

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

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



« Ответ #9 : 30.01.2010, 17:37:11 »

Вот кстати финальная версия. Принцып работы очень прост, что позволяет работать даже с ЧПУ.
При желании её несложно доработать..
Код
	$id=JRequest::getVar( 'id','' );
if (JRequest::getVar('view')=='category')
{$this->params->catid=$id;}
if (JRequest::getVar('view')=='article') {
        $sql = "SELECT catid FROM #__content WHERE id = .$database->Quote($id) ";
        $database->setQuery( $sql );
        echo($database->loadResult());
}
 
код вообще бредовый Azn
Код
if (JRequest::getVar('view') == 'category') {
 $id=JRequest::getInt('id');
} else if (JRequest::getVar('view')=='article') {
 $id=JRequest::getInt('catid');
}
echo 'ID category - '.$id;
 
Записан
maestra
Осваиваюсь на форуме
***

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

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



« Ответ #10 : 07.04.2010, 18:38:11 »

Мучает аналогичная проблема. Разница в том, что надо в заголовке статьи публиковать ее ID, но только в том случае если она находится в определенной категории (идентифицировать тоже надо по ID`у категории).

Думаю, что делать это надо не в шаблоне, а непосредственно в com_content. Проблема в том, что не знаю как получить IDы статьи и категории (пытаюсь изучать API Joomla 1.5, но из-за слабости знания английского языка дело продвигается очень медленно...)

Поможете?
Записан
e-life
Осваиваюсь на форуме
***

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

Сообщений: 26


« Ответ #11 : 08.05.2010, 10:58:29 »

Код
  $id=JRequest::getInt('catid');
 

При включеном СЕО не работает!
А очень хотелось бы.
Получается только через БД чтоли?
Записан
vovchikku
Давно я тут
****

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

Сообщений: 366


« Ответ #12 : 16.10.2010, 23:14:40 »

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

smokerman, скажите ваш код подойдет для этой задачи? если да, то куда и как вставить вывод определенного модуля?
Цитировать
if (JRequest::getVar('view') == 'category') {
  $id=JRequest::getInt('id');
} else if (JRequest::getVar('view')=='article') {
  $id=JRequest::getInt('catid');
}
echo 'ID category - '.$id;
 
Записан
SmokerMan
Профи
********

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

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



« Ответ #13 : 17.10.2010, 03:21:54 »

vovchikku может это поможет, но не уверен Azn
http://joomlaforum.ru/index.php/topic,132312.0.html
Записан
format1981
Новичок
*

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

Сообщений: 4


« Ответ #14 : 25.02.2011, 12:12:26 »

Если еще не разобрались с проблемой, то вот ответ

echo $_GET['id'];
echo $_GET['catid'];

работает с seo

вот источник http://forum.joomla.org/viewtopic.php?f=431&t=320868
Записан
vovchikku
Давно я тут
****

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

Сообщений: 366


« Ответ #15 : 25.02.2011, 14:41:19 »

проще поставить advanced module manager
Записан
LadaDed
Новичок
*

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

Сообщений: 8


« Ответ #16 : 15.05.2017, 08:36:09 »

Это нужно делать в default.php в category или куда там переадресация
$this->category->id
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | 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