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

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Условие в шаблоне Joomla 1.5?  (Прочитано 1237 раз)
0 Пользователей и 1 Гость смотрят эту тему.
fedya
Завсегдатай
*****

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

Сообщений: 711


« : 25.08.2009, 01:59:26 »

Как показать левую колонку только в определенном пункте меню...у которого имеются подпункты...причем подпункты время от времени удаляются и добавляются...
т.е. как проверить, что подпункт принадлежит нужному мне пункту...именно в index.php


Записан
Mitrich
Администратор
*******

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

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


Все можно. Но сначала учиться, учиться и учиться.


« Ответ #1 : 25.08.2009, 02:08:04 »

Определись
в пункте у которого есть дочки
или в дочках родителем которых является пункт с определенным ID ?
Записан
fedya
Завсегдатай
*****

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

Сообщений: 711


« Ответ #2 : 25.08.2009, 02:12:48 »

есть пункт...X...
как построить условие, чтобы оно выполнялось...только в этом пункте X и в подпунктах пункта X
Записан
beliyadm
Профи
********

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

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


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


« Ответ #3 : 25.08.2009, 10:25:56 »

как построить условие, чтобы оно выполнялось...только в этом пункте X и в подпунктах пункта X
если именно так, то я писал похожий пример
Записан
fedya
Завсегдатай
*****

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

Сообщений: 711


« Ответ #4 : 25.08.2009, 13:13:16 »

если именно так, то я писал похожий пример
Цитировать
$query = 'SELECT parent FROM #__menu WHERE id = '.$Itemid.' AND published = 1 ';
    $db->setQuery($query);
    $curiyemid = $db->loadResult();
    if ($curiyemid == '0') {
    $curiyemid = $Itemid;
    } else {   }

а $curiyemid это в данном примере что такое?
Записан
Mitrich
Администратор
*******

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

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


Все можно. Но сначала учиться, учиться и учиться.


« Ответ #5 : 25.08.2009, 13:15:42 »

id родителя
Записан
fedya
Завсегдатай
*****

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

Сообщений: 711


« Ответ #6 : 25.08.2009, 17:08:54 »

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

Мир
.  |_ Страна
.  .  |_ Город

Город со Страной подружил...а вот Город с Миром теперь как...

как модифицировать запрос? если тут конечно менять надо...
$query = 'SELECT parent FROM #__menu WHERE id = '.$Itemid.' AND published = 1 ';
Записан
Mitrich
Администратор
*******

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

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


Все можно. Но сначала учиться, учиться и учиться.


« Ответ #7 : 25.08.2009, 17:43:56 »

проще выбрать все дерево меню (id и parent)
и потом снизу вверх пройтись по нему

приблизительно так как родной treerecurse
Записан
cor_ar
Осваиваюсь на форуме
***

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

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



« Ответ #8 : 25.08.2009, 19:16:55 »

проще выбрать все дерево меню (id и parent)
и потом снизу вверх пройтись по нему

Вот например так:

Код
$Itemid = JRequest::getInt( 'Itemid', 9, 'get' ); // получили текущий ItemID
$query = 'SELECT id, parent  FROM #__menu WHERE published = 1 ';  // этим запросом берем только два столбца id и parent
$db =& JFactory::getDBO();
$db->setQuery($query);
$list_obj=$db->loadObjectList(); //  загружаем результат в виде массива обьектов класса stdClass
$list=array();
foreach($list_obj as $obj) {  // Так как нас не устраивает массив объектов, мы его переделываем в более читаемый вид
 
$list[$obj->id] = $obj->parent;
}
 
/*
 
[x]=>[y]
[x1]=>[y1]
...
где x - id
    y - parent
 
Т.е получился ассоциативный массив где по х можно найти y  и т.д
*/

 
$main_Itemid=$Itemid;
while ($list[$main_Itemid]!=0) :
$main_Itemid=$list[$main_Itemid];
endwhile;
/*В цикле while мы просто перебираем пока не узнаем родителя. То есть вложенность может быть неограниченая */
 
echo $main_Itemid; // твой "главный"(родитель) id пункта меню

проверял на двойной вложенности , работает  Wink
« Последнее редактирование: 25.08.2009, 22:51:58 от cor_ar » Записан
fedya
Завсегдатай
*****

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

Сообщений: 711


« Ответ #9 : 25.08.2009, 22:26:09 »

ОК...вроде работает...

поясните, пожалуйста, логику работы...

и ещё...вот здесь
Код:
$Itemid = JRequest::getInt( 'Itemid', 9, 'get' );
"9" - это что за параметр...?

Код:
$query = 'SELECT id, parent  FROM #__menu WHERE published = 1 ';

почему здесь #__menu...а не jos_menu например...?
Записан
userxp
Администратор
*******

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

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


Злой и ужасный бармалей


« Ответ #10 : 25.08.2009, 22:32:04 »

потому что JDatabase отслеживает префикс #__ как jos_ или любой другой (какой указывали при инсталляции)

"9" - это что за параметр...?
значение по-умолчанию (если Itemid не указан или не является целым числом)
Записан
cor_ar
Осваиваюсь на форуме
***

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

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



« Ответ #11 : 25.08.2009, 22:57:20 »

поясните, пожалуйста, логику работы...

Дописал в коде коменты.

можете вставить проверочный код и рассмотреть результат

например
Код
print_r($list_obj);

что бы посмотреть какой массив был какой получился .. в общем что то в этом роде

Записан
vralee
Новичок
*

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

Сообщений: 1


« Ответ #12 : 06.01.2012, 20:50:29 »

подскажите как правильно построить такое меню и что для этого нужно

1Плитка
 1.1Германия
   1.1.1компания по производству например ape
     1.1.1.1и тематика плитки
вот ужэ к пункту тематики плитки нежно припесать фотогалерею
Записан
Страниц: [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