Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samouchitel_po_razrabotke_rasshireny_dlya_Jooml....docx
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.53 Mб
Скачать

Попробуем смешать

Наш Модуль настроен на освещение последних мнений наших посетителей, однако частые гости могут захотеть посмотреть прошлые Обзоры. Давайте исправим это несколько изменив Модуль. Замените строки в mod_reviews.php где в выделенном коде показана функция $list:

<?php

defined('_JEXEC') or die('Restricted access');

require(dirname(__FILE__).DS.'helper.php');

$random = $params->get('random', 0);

if($random)

{

$list = modReviewsHelper::getRandomReview();

}

else

{

$list = modReviewsHelper::getReviews($params);

}

require(JModuleHelper::getLayoutPath

('mod_reviews', 'default'));

?>

Вместо того чтобы просто показать все Обзоры, сейчас мы заполним $list основываясь на параметрах Модуля. Объект $params автоматически помещается в глобальные, с предустановленной настройкой для нашего Модуля. Мы используем функцию get(), чтобы поместить случайные параметры в $random, по умолчанию 0. Далее, мы проверяем значение $random. Если оно отлично от нуля, вызываем функцию getRandomReview() его (значение) мы будем вставлять в modReviewsHelper. В противном случае, мы получаем Обзоры так, как делали раньше. Откройте helper.php и добавьте следующую функцию в класс modReviewsHelper:

function getRandomReview()

{

$db =& JFactory::getDBO();

$query = "SELECT id, name, quicktake FROM #__reviews";

$db->setQuery( $query );

$rows = $db->loadObjectList();

$i = rand(0, count($rows) - 1 );

$row = array( $rows[$i] );

return $row;

}

Функция сначала получает ссылку на текущее соединение с БД. Запрос получает столбцы id, name и quicktake из всех строк в таблице jos_reviews.

После того как все строки были погружены в $rows, используем PHP-функцию rand(), которая выдаст случайное значение между 0 и числом строк минус одна включительно. Переменная $row содержит массив с одним элементом, найденным случайно по индексу в массиве $rows. Важно обернуть $rows[$i] в массив, потому что такой результат [формат. прим.переводчика] ожидает получатель.

Сохраните файл и обновите страницу в браузере. Затем обновите ее повторно. Если повезет, Обзоры должны меняться случайно

Резюме

Наш Модуль установлен и работает и мы в состоянии привлечь посетителей определенным содержанием. Вновь введенные Обзоры будут автоматически отражены в Модуле. Мы создали вспомогательный класс (helper) для централизации доступа к данным и функций отображения. Было добавлено несколько различных стилей, так что у нас есть несколько вариантов отображения. Модуль может показать нашим гостям разнообразие ресторанов, которые мы рассмотрели, и может быть использован в любом месте на сайте

Расширяем проект

Наши Компоненты и Модули делают хорошую работу по управлению Обзорами и принимая комментарии. Однако мы могли бы сделать множество модификаций, чтобы дать нашим Обзорам больше разных отображений (видов). Кроме того, теперь у нас есть комментарии и мы должны найти способ их модерировать. В этой главе мы сделаем следующие изменения и дополнения:

  • Создание модели данных

  • Переход на просмотры (виды, отображения)

  • Переключение через Контроллеры

  • Управление публикацией Обзоров

  • Разбивка длинных списков на страницы

  • Управление комментариями

  • Дополнительные ПИ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]