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

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

Как достать картинку из меню?

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

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

Сообщений: 47


« : 11.06.2017, 17:39:29 »

Здравствуйте, возникла необходимость отображать на странице определенную картинку в зависимости от от выбранного пункта меню.
У меня такая идея в "Менеджере меню" в пункте меню в поле "Изображение ссылки" вставить картинку, а в index.php вставить ее код в нужный для меня блок.
Вот только не пойму какой код нужно вставить?
Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #1 : 11.06.2017, 17:47:39 »

Где именно там картика не помню, но сам объект активного меню получается вот так.
Код
$app  = JFactory::getApplication();
$activeMenu = $app->getMenu()->getActive();
echo '<pre>', print_r($activeMenu), '</pre>';
 
Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #2 : 11.06.2017, 18:05:52 »

вот что получилось:
Код:
JMenuItem Object
(
    [id] => 101
    [menutype] => mainmenu
    [title] => HTML
    [alias] => home
    [note] =>
    [route] => home
    [link] => index.php?option=com_content&view=article&id=2
    [type] => component
    [level] => 1
    [language] => *
    [browserNav] => 0
    [access] => 1
    [params:protected] => Joomla\Registry\Registry Object
        (
            [data:protected] => stdClass Object
                (
                    [show_title] => 0
                    [link_titles] => 0
                    [show_intro] => 0
                    [info_block_position] => 1
                    [info_block_show_title] => 0
                    [show_category] => 0
                    [link_category] => 0
                    [show_parent_category] => 0
                    [link_parent_category] => 0
                    [show_associations] => 0
                    [show_author] => 0
                    [link_author] => 0
                    [show_create_date] => 0
                    [show_modify_date] => 0
                    [show_publish_date] => 0
                    [show_item_navigation] => 0
                    [show_vote] => 0
                    [show_icons] => 0
                    [show_print_icon] => 0
                    [show_email_icon] => 0
                    [show_hits] => 0
                    [show_tags] => 0
                    [show_noauth] =>
                    [urls_position] =>
                    [menu-anchor_title] =>
                    [menu-anchor_css] =>
                    [menu_image] => images/banners/white.png
                    [menu_text] => 0
                    [menu_show] => 1
                    [page_title] =>
                    [show_page_heading] => 0
                    [page_heading] =>
                    [pageclass_sfx] =>
                    [menu-meta_description] =>
                    [menu-meta_keywords] =>
                    [robots] =>
                    [secure] => 0
                )

            [initialized:protected] => 1
            [separator] => .
        )

    [home] => 1
    [img] => 
    [template_style_id] => 0
    [component_id] => 22
    [parent_id] => 1
    [component] => com_content
    [tree] => Array
        (
            [0] => 101
        )

    [query] => Array
        (
            [option] => com_content
            [view] => article
            [id] => 2
        )

)
1
« Последнее редактирование: 11.06.2017, 18:10:25 от skytype » Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #3 : 11.06.2017, 18:06:41 »

вот моя картинка [menu_image] => images/banners/white.png, а как ее вставить в блок нужный мне
« Последнее редактирование: 11.06.2017, 18:11:14 от skytype » Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #4 : 11.06.2017, 18:12:46 »

вот моя картинка [menu_image] =&gt; images/banners/white.png, а как ее вставить в в блок нужный мне
Агась, скинул то что нужно.
Код
<?php
$app  = JFactory::getApplication();
$activeMenu = $app->getMenu()->getActive();
$activeMenuIMG = '/'.$activeMenu->params->get('menu_image','images/defaultimage.png');
?>
<img src="<?php echo $activeMenuIMG; ?>" />
 

Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #5 : 11.06.2017, 18:24:55 »

Огромное спасибо, все работает, плюсик к карме)
Подскажи, что нужно прочитать чтобы понять почему эта строчка составлена так: $activeMenuIMG = '/'.$activeMenu->params->get('menu_image','images/defaultimage.png');
Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #6 : 11.06.2017, 18:34:10 »

Думаю какой нибудь учебник по основам php и  доку Joomla
Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #7 : 11.06.2017, 19:02:34 »

Я неправильно выразил свою мысль, я не понял почему именно через get.
Я пытался получить так: $activeMenu->params->menu_image.
Вот и спрашиваю что именно прочесть чтобы понять почему через get.
Какой метод искать?
Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #8 : 11.06.2017, 21:00:05 »

Я неправильно выразил свою мысль, я не понял почему именно через get.
Я пытался получить так: $activeMenu->params->menu_image.
Вот и спрашиваю что именно прочесть чтобы понять почему через get.
Какой метод искать?
[params:protected] => Joomla\Registry\Registry Object
        (
            [data:protected] => stdClass Object
Вот почему.
Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #9 : 12.06.2017, 11:16:47 »

Возникла проблема.
Когда я кликаю на пункты меню картинка появляется, но если я перехожу в подменю этого пункта то картинка пропадает.
При этом если оставить чтобы картинка появлялась в самом меню то там она не пропадает, а в моем блоке ее нет.
Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #10 : 12.06.2017, 11:22:33 »

Возникла проблема.
Когда я кликаю на пункты меню картинка появляется, но если я перехожу в подменю этого пункта то картинка пропадает.
При этом если оставить чтобы картинка появлялась в самом меню то там она не пропадает, а в моем блоке ее нет.
Ну логично. Ведь держаться же картинка активного.  Если ещё родителя то это будет уже жуткое утежеление, тут два варианта вижу.
1 сделать чисто модуль с картинкой.
2 переопределить ещё один шаблон модуля меню. И там выводить на только картинки активного или активного родителя.
Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #11 : 12.06.2017, 11:24:03 »

print_r($activeMenu) выдает такие параметры.
Код:
JMenuItem Object
(
    [id] => 111
    [menutype] => mainmenu
    [title] => Оглавление
    [alias] => oglavlenie
    [note] =>
    [route] => home/oglavlenie
    [link] => index.php?option=com_content&view=article&id=3
    [type] => component
    [level] => 2
    [language] => *
    [browserNav] => 0
    [access] => 1
    [params:protected] => Joomla\Registry\Registry Object
        (
            [data:protected] => stdClass Object
                (
                    [show_title] => 0
                    [link_titles] =>
                    [show_intro] =>
                    [info_block_position] =>
                    [info_block_show_title] =>
                    [show_category] =>
                    [link_category] =>
                    [show_parent_category] =>
                    [link_parent_category] =>
                    [show_associations] =>
                    [show_author] =>
                    [link_author] =>
                    [show_create_date] =>
                    [show_modify_date] =>
                    [show_publish_date] =>
                    [show_item_navigation] =>
                    [show_vote] =>
                    [show_icons] =>
                    [show_print_icon] =>
                    [show_email_icon] =>
                    [show_hits] =>
                    [show_tags] =>
                    [show_noauth] =>
                    [urls_position] =>
                    [menu-anchor_title] =>
                    [menu-anchor_css] =>
                    [menu_image] =>
                    [menu_text] => 1
                    [menu_show] => 1
                    [page_title] =>
                    [show_page_heading] =>
                    [page_heading] =>
                    [pageclass_sfx] =>
                    [menu-meta_description] =>
                    [menu-meta_keywords] =>
                    [robots] =>
                    [secure] => 0
                )

            [initialized:protected] => 1
            [separator] => .
        )

    [home] => 0
    [img] =>  
    [template_style_id] => 0
    [component_id] => 22
    [parent_id] => 101
    [component] => com_content
    [tree] => Array
        (
            [0] => 101
            [1] => 111
        )

    [query] => Array
        (
            [option] => com_content
            [view] => article
            [id] => 3
        )

)
1
Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #12 : 12.06.2017, 11:27:17 »

Я тоже уже думаю о модуле, просто сбивает столку что в меню картинка не пропадает, а в Joomla я новичек и PHP только еще учу, вот и подумал что можно использовать другой класс.
Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #13 : 12.06.2017, 11:45:14 »

Почему не работает этот код
Код:
$activeMenuImgTest = $activeMenu->params->get('menu_image');
if($activeMenuImgTest){
    $activeMenuIMG = '/' . $activeMenu->params->get('menu_image');
    $imgTest = "Заполнено";
}else{
    $imgTest = "Пусто";
}
<img src="' . $activeMenuIMG . '" />
Причем здесь все работает
Код:
<?php echo '<pre>',  $imgTest, '</pre>'; ?>
когда есть картинка пишет "Заполнено", а когда нет - "Пусто".
« Последнее редактирование: 12.06.2017, 11:48:31 от skytype » Записан
skytype
Осваиваюсь на форуме
***

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

Сообщений: 47


« Ответ #14 : 12.06.2017, 12:32:06 »

Для меня это пока еще все сложно вставлю через модули.
Записан
Страниц: [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