Чтение онлайн

на главную - закладки

Жанры

Разрботка расширений для CMS Joomla
Шрифт:

Пример:

$query = 'SELECT id,title FROM #__content'; $db =& JFactory::getDBO; $db->setQuery($query); $content = $db->loadObjectList; echo JHTML::_('select.radiolist', $content, 'radlist', 'class="inputbox"', 'id', 'title', 2, 'radlist', false);

Результат показан на рис. 3.10.

Рис. 3.10. Группа переключателей

Практика

Обработка категорий

В единственном вопросе, который хранится в нашей базе, в поле id_cat

стоит значение 1. Оно должно означать id категории. Добавим таблицу и код для работы с категориями.

Создание таблицы для категорий

Выполните следующий SQL-запрос, чтобы создать таблицу для хранения категорий:

CREATE TABLE `jos_myquestions_categories` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `desc` TEXT NOT NULL DEFAULT '' )

Добавьте записи в эту таблицу:

INSERT INTO `jos_myquestions_categories` VALUES (NULL,'Без категории',''), (NULL,'Риторические вопросы','Вопросы, не требующие ответа')

Зайдите в phpMyAdminи убедитесь, что таблица jos_myquestions_categoriesсодержит две записи (рис. 3.11).

Рис. 3.11. Таблица базы данных, хранящая данные о категориях

Таким образом, сейчас все вопросы, для которых в поле id_catстоит значение 1, относятся к категории " Без категории".

Создание класса таблицы

Создайте файл /administrator/components/com_myquestions/tables/category.php:

<?php defined('_JEXEC') or die('Restricted access'); class TableCategory extends JTable { var $id = null; var $name = null; var $desc = null; function __construct(&$db) { parent::__construct('#__myquestions_categories', 'id', $db); } } ?>

Вывод списка категорий

Добавьте в файл admin.myquestions.phpфункцию showCategories:

function showCategories($option) { $db =& JFactory::getDbo; $query = "SELECT * FROM #__myquestions_categories"; $db->setQuery($query); $rows = $db->loadObjectList; if ($db->getErrorNum) { echo $db->stderr; return false; } HTML_questions::showCategories($option, $rows); }

Эта функция аналогична функции showQuestions, рассмотренной ранее.

В файл admin.myquestions.html.phpв класс HTML_questions добавьте еще одну функцию:

function showCategories($option, &$rows) { ?> <form action="index.php" method="post" name="adminForm"> <table class="adminlist"> <thead> <tr> <th width="20"> <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($rows);?>);"/> </th> <th class="title" width="30%"><?php echo JText::_('COM_MYQUESTIONS_CATEGORY_NAME');?></th> <th><?php echo JText::_('COM_MYQUESTIONS_CATEGORY_DESC');?></th> </tr> </thead> <?php jimport('joomla.filter.output'); $k = 0; for ($i = 0, $n = count($rows); $i < $n; $i ++) { $row = &$rows[$i]; $checked = JHTML::_('grid.id', $i, $row->id); $link = JFilterOutput::ampReplace('index.php?option=' .$option . '&task=editcat&cid[]='. $row->id); ?> <tr class="<?php echo "row$k";?>"> <td><?=$checked?></td> <td><?='<a href="#">'.$row->name.'</a>'?></td> <td><?=$row->desc?></td> </tr> <?php $k = 1 - $k; } ?> </table> <input type="hidden" name="option" value="<?php echo $option;?>"/> <input type="hidden" name="task" value=""/> <input type= "hidden" name="boxchecked" value="0"/> </form> <?php }

Данная

функция также аналогична одноименной функции для отображения списка вопросов.

Добавьте в переключатель switch в файле admin.myquestions.phpобработку новой задачи:

case 'showcat': showCategories($option); break;

Добавьте в файл /administrator/language/ru-RU/ru-RU.com_myquestions.iniкод:

COM_MYQUESTIONS_CATEGORY_NAME="Название категории" COM_MYQUESTIONS_CATEGORY_DESC="Описание категории"

Перейдя по ссылке ссылка: http://localhost/joomla/administrator/index.php?option=com_myquestions&task=showcat, вы уже можете увидеть список категорий.

Однако пока над списком будет отображаться старая панель инструментов, которую мы создали для списка вопросов. Поэтому необходимо также создать новые панели инструментов для работы с категориями. Откройте файл toolbar.myquestions.phpи добавьте в переключатель switch следующий код:

case 'showcat': TOOLBAR_myquestions_categories::_DEFAULT; break;

Как видите, мы добавили обработку задачи showcat - отображение списка категорий. Соответственно, вызывается функция _DEFAULT класса TOOLBAR_myquestions_categories. Напишем код этого класса. Добавьте в файл toolbar.myquestions.html.phpкод:

class TOOLBAR_myquestions_categories { function _DEFAULT { JToolBarHelper::title(JText::_('COM_MYQUESTIONS_TOOLBAR_TITLE_CATEGORIES'), 'generic.png'); JToolBarHelper::addNew('addcat'); JToolBarHelper::editList('editcat'); JToolBarHelper::deleteList (JText::_('COM_MYQUESTIONS_TOOLBAR_REMOVE_CATEGORIES_CONFIRMATION'), 'removecat'); } }

Таким образом, панель инструментов для списка категорий будет содержать три кнопки: " Создать", " Изменить" и " Удалить".

Добавьте в файл /administrator/language/ru-RU/ru-RU.com_myquestions.iniкод:

COM_MYQUESTIONS_TOOLBAR_TITLE_CATEGORIES="Управление категориями вопросов" COM_MYQUESTIONS_TOOLBAR_REMOVE_CATEGORIES_CONFIRMATION="Вы действительно хотите удалить эти категории?"

Теперь по ссылке ссылка: http://localhost/joomla/administrator/index.php?option=com_myquestions&task=showcatвидим список категорий (рис. 3.12).

(есть увеличенное изображение)

Рис. 3.12. Список категорий в бэкенде

Создание, редактирование и удаление категорий

При нажатии на кнопки " Создать" или " Изменить", расположенные над списком категорий, должна отображаться другая панель инструментов. Для этого добавьте в класс TOOLBAR_myquestions_categories функцию _NEW:

class TOOLBAR_myquestions_categories { function _NEW { JToolBarHelper::title(JText::_('COM_MYQUESTIONS_TOOLBAR_TITLE_CATEGORIES'), 'generic.png'); JToolBarHelper::save('savecat'); JToolBarHelper::apply('applycat'); JToolBarHelper::cancel('showcat'); } function _DEFAULT { JToolBarHelper::title(JText::_('COM_MYQUESTIONS_TOOLBAR_TITLE_CATEGORIES'), 'generic.png'); JToolBarHelper::addNew('addcat'); JToolBarHelper::editList('editcat'); JToolBarHelper::deleteList(JText::_('COM_MYQUESTIONS_TOOLBAR_REMOVE_CONFIRMATION'), 'removecat'); } }

Поделиться:
Популярные книги

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2

Кодекс Крови. Книга ХIV

Борзых М.
14. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIV

Магия чистых душ 3

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Магия чистых душ 3

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Усадьба леди Анны

Ром Полина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Усадьба леди Анны

Измена. Возвращение любви!

Леманн Анастасия
3. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Возвращение любви!

Два лика Ирэн

Ром Полина
Любовные романы:
любовно-фантастические романы
6.08
рейтинг книги
Два лика Ирэн

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Мымра!

Фад Диана
1. Мымрики
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Мымра!

Таня Гроттер и магический контрабас

Емец Дмитрий Александрович
1. Таня Гроттер
Фантастика:
фэнтези
8.52
рейтинг книги
Таня Гроттер и магический контрабас

Имперский Курьер

Бо Вова
1. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Имперский Курьер

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Сердце дракона. Танец с врагом

Серганова Татьяна
2. Танец с врагом
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Сердце дракона. Танец с врагом