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

Discussion in 'Программирование' started by nagi, Dec 13, 2007.

  1. Offline

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

    Joined:
    Oct 3, 2007
    Messages:
    48
    Likes Received:
    0
    Gender:
    Male
    Код (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. Как правильно его извлеч или откуда!
     
    Last edited: Dec 18, 2007
  2.  
  3. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Joined:
    Apr 19, 2006
    Messages:
    1,210
    Likes Received:
    46
    Gender:
    Male
    Ответ: Правильное Получение itemid

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

    Dead Krolik Недавно здесь => Cпециалист <=

    Joined:
    Apr 13, 2007
    Messages:
    3,685
    Likes Received:
    101
    Gender:
    Male
    Ответ: Правильное Получение itemid

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

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

    Joined:
    Oct 3, 2007
    Messages:
    48
    Likes Received:
    0
    Gender:
    Male
    Ответ: Правильное Получение itemid

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

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

    Joined:
    Jul 23, 2007
    Messages:
    206
    Likes Received:
    11
    Gender:
    Male
    Ответ: Правильное Получение 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"] = '&amp;Itemid='.$menu_row->id;
    29.       $retVal["name"] = $menu_row->name;
    30.     }
    31.   }
    32.  
    33.   return $retVal;
    34. }


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

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

    Joined:
    Dec 15, 2007
    Messages:
    5
    Likes Received:
    0
    Gender:
    Male
    Подскажитье пожалуйста, в какой файл или вообще куда вставляется выше указанный код , который предоставил kvt ? Я пока что только разбираюсь в Joomla и у меня проблема, по которой идет обсуждение.

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

    Dead Krolik Недавно здесь => Cпециалист <=

    Joined:
    Apr 13, 2007
    Messages:
    3,685
    Likes Received:
    101
    Gender:
    Male
    А тебе собственно что нужно получить в результате?
     
  9. Offline

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

    Joined:
    Dec 15, 2007
    Messages:
    5
    Likes Received:
    0
    Gender:
    Male
    У меня есть блоки на mod_php , они назначены на главную страницу, но как я заметил отображаются они не только на главной странице, а еще примерно на 20-ти страницах
    В этих блоках стоят ссылки - и проблема в том что они получаются практически сквозными
    Вот объяснил как мог
     
  10. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Joined:
    Apr 13, 2007
    Messages:
    3,685
    Likes Received:
    101
    Gender:
    Male
  11. Offline

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

    Joined:
    Dec 15, 2007
    Messages:
    5
    Likes Received:
    0
    Gender:
    Male
    Я понял, что это глобальная переменная
    Но почему эта глобальная переменная от главной страницы присваивается еще 20-30 страницам, совсем не главным
    Правда я заметил, что на часть этих страниц ведут ссылки с главного меню
    Но как решить проблему ???
     
  12. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Joined:
    Apr 13, 2007
    Messages:
    3,685
    Likes Received:
    101
    Gender:
    Male
    Так задумано :)

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

Share This Page

Loading...