Правильное Получение itemid

Тема в разделе "Программирование", создана пользователем nagi, 13.12.2007.

  1. Offline

    nagi Недавно здесь

    Регистрация:
    03.10.2007
    Сообщения:
    48
    Симпатии:
    0
    Пол:
    Мужской
    Код (PHP):
    1. //Подключаемся к базе сдля выдирания значения $itemid= для возможности привязыват к компоненту статьи
    2. $database->setQuery("SELECT * FROM #__menu WHERE `link` LIKE '%option=com_test%'  LIMIT  1 ");
    3. $list = $database->loadObjectList();
    4. foreach($list as $user)
    5. {
    6. $itemid = $user->id;// присваем значение передаваемой запросами переменной
    7. }

    Использую данный способ получения значения itemid для привязки к своему компоненту разных вищичек. Но вчера обнаружил что бывает данный запрос выдаёт не тот itemid. Как правильно его извлеч или откуда!
     
    Последнее редактирование: 18.12.2007
  2.  
  3. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ответ: Правильное Получение itemid

    не заморачивался на данное решение потому как, если есть две ссылки в меню, то тут уже надо изловчиться, чтобы Itemid был именно тот, который надо, если ссылок уже больше чем 2? Тогда вообще очень трудно будет это сделать. Поэтому данная переменная у меня присутствует лишь как параметр, который можно задавать вручную.
     
  4. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Правильное Получение itemid

    Ты вообще понимаешь смысл кода, который процитирован или просто так скопировал.
     
  5. Offline

    nagi Недавно здесь

    Регистрация:
    03.10.2007
    Сообщения:
    48
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Правильное Получение itemid

    рабочий код ,а что, я его сам написал глючит только в случаи если несколько ссылок на данный компонет, потомучто выбирает последний. В топике выше единственно правильное решение предложено на данный момент.
     
  6. kvt
    Offline

    kvt Недавно здесь

    Регистрация:
    23.07.2007
    Сообщения:
    206
    Симпатии:
    11
    Пол:
    Мужской
    Ответ: Правильное Получение itemid

    Давно написал для себя такую функцию

    Код (PHP):
    1. /************************************************
    2. * Функция извлечения наименования пункта
    3. * меню для компонента и его Itemid
    4. *
    5. * Параметры:
    6. *   $find_option - наименование компонента
    7. *                  например: com_mycomp
    8. * Возвращаемое значение:
    9. *   Массив из двух элеменов.
    10. *   array['name']   - тайтл пункта меню
    11. *   array['itemid'] - Itemid этого пункта
    12. *************************************************/
    13. function getMenuInfo($find_option)
    14. {
    15.   global $database;
    16.  
    17.   $menu_row = null;
    18.   $retVal = array( "name"=>"", "itemid"=>"" );
    19.  
    20.   $database->setQuery("SELECT id FROM #__components WHERE link='option=$find_option'");
    21.   $component_id = intval($database->loadResult());
    22.  
    23.   if($component_id > 0) {
    24.     $database->setQuery("SELECT id, name FROM #__menu WHERE componentid=$component_id");
    25.     $database->loadObject($menu_row);
    26.    
    27.     if($menu_row) {
    28.       $retVal["itemid"] = '&Itemid='.$menu_row->id;
    29.       $retVal["name"] = $menu_row->name;
    30.     }
    31.   }
    32.  
    33.   return $retVal;
    34. }


    Там есть трабл, что если будет несколько пунктов меню для одного компонента, то определение будет только для одного из них, котороый первым стоит в базе. Собственно в таком случае лучше использовать задание Itemid в ручную.
     
  7. Offline

    2004mvv Недавно здесь

    Регистрация:
    15.12.2007
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Подскажитье пожалуйста, в какой файл или вообще куда вставляется выше указанный код , который предоставил kvt ? Я пока что только разбираюсь в Joomla и у меня проблема, по которой идет обсуждение.

    Заранее спасибо !
     
  8. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    А тебе собственно что нужно получить в результате?
     
  9. Offline

    2004mvv Недавно здесь

    Регистрация:
    15.12.2007
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    У меня есть блоки на mod_php , они назначены на главную страницу, но как я заметил отображаются они не только на главной странице, а еще примерно на 20-ти страницах
    В этих блоках стоят ссылки - и проблема в том что они получаются практически сквозными
    Вот объяснил как мог
     
  10. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
  11. Offline

    2004mvv Недавно здесь

    Регистрация:
    15.12.2007
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Я понял, что это глобальная переменная
    Но почему эта глобальная переменная от главной страницы присваивается еще 20-30 страницам, совсем не главным
    Правда я заметил, что на часть этих страниц ведут ссылки с главного меню
    Но как решить проблему ???
     
  12. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Так задумано :)

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

Поделиться этой страницей

Загрузка...