Окт
14

Как сделать дополнительный параметр для ссылки меню в Joomla?

Собственно, столкнулся я с такой нетривиальной задачей. А именно, мне понадобилось сделать дополнительный параметр для ссылки в .
На макете нарисовано так:

menujoomla

Видно, что ссылка идет с очень интересным дополнительным текстом. Будем пробовать решить эту проблему.

Решать будем путем создания дополнительного параметра в меню Джумлы. Причем, сделаем так, чтобы этот параметр появился в админке. Классно будет, правда? Это вам не цветы по оптовой цене покупать и перепродавать втридорого! Тогда начнем…

Для начала введем этот доп.параметр sptext. Для этого добавим в administrator/components/com_menus/models/metadata/component.xml описание параметра после тега . Проводя аналогию со школой, можно сказать, что дружные одноклассники приняли в свои ряды новичка (в список параметров добавлен новый элемент).

Теперь обновляем нашу админку и вуаля! Параметр появился.

menujoomla2

Но ликовать ещё рано! Нужно ещё из него получить данные. Для этого будем ломать файл модуля главного меню. modules/mod_mainmenu/helper.

Сначала сделаем вывод ссылки в том формате, который нам нужен. Для моей задачи он выглядит так (это примерно 363 строка в указанном файле).

1
$data = '<div class="link"><a href="'.$tmp->url.'">'.$image.$tmp->name.'</a><br /><span>'.$text.'</span></div>';

Нетрудно догадаться, что именно в переменной $text и будет спрятано наше дополнительное описание. Осталось только получить к нему доступ. Я придумал, наверное, не оптимальный вариант. Может быть, вы меня поправите. Итак, вот кусок кода, который нужно вставить ПЕРЕД выводом переменной $data.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$db =& JFactory::getDBO();
                     $tableName  = $db->nameQuote('jos_menu');
                    $columnName = $db->nameQuote('params');
                    $sql = "SELECT $columnName FROM $tableName WHERE id = $tmp->id";
                    $db->setQuery($sql);
                    if ($db->query()) {
                        $ids = $db->loadResultArray();
$z = implode(',',$ids);
                        //echo $z;
                        $begin=strpos($z, "sptext")+7;
                        $end = strpos($z, "show_page_title");
                        $text = substr ($z, $begin, $end-$begin);
                        } else {
                            echo "FALSE";
                        }

Это не что иное, как создание запроса к базе данных с выуживанием нужного поля (функции strpos и substr). Фишка в том, что доп. параметры записываются в одно поле базы данных, и чтобы получить доступ к нужным данным приходится работать со строками. Вот, в принципе, и всё на сегодня! А теперь предлагаю почитать как реальный пацан трёт на тему как вымучивать лаве в интернете и немного посмеяться!

1 комментарий к записи “Как сделать дополнительный параметр для ссылки меню в Joomla?”

  • Leon 21 ноября 2011 - 1:30

    Когда параметр уже записан в поле params, то обращайтесь к нему через JParameter.
    А вот как добавить дополнительный параметр не изменяя administrator/components/com_menus/models/metadata/component.xml – вот вопрос…

Прокомментировать

Рубрики

Облако меток

В прямом эфире