Joomla портал
seo seo Subscribe
0
seo

Если второй параметр равен

единице, то оглавление каталога будет выведено в обратном порядке, т. е.

ссылки . и .. мы получим в конце массива, а не в начале. Не будем

усложнять себе жизнь, т. е. выводить оглавление в обратном порядке.

Листинг 7.1 содержит пример кода, выводящего тег со случайной

картинкой.

/ Сканируем текущий каталог

files = scandir(».»);

94

Часть II. PHP-Nuke

// Получаем случайное число от 2 до N, где N — число элементов каталога

$k = mt_rand(2, count($files)-1);

// Выводим результат

echo ««;

Заметим, что функция scandir () работает только в Р»НР 5, если у вас РНР 4,

то код изменяется следующим образом:

$dir =

$dh = opendir($dir);

while (false !== ($filename = readdir($dh)))

{

$files[] = $filename;

}

Когда мы определились, что будет делать наш модуль и даже набросали

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

Поскольку наш модуль не очень сложный, то нет особой необходимости

рассматривать отдельно шаблон модуля и сам модуль. Сэкономим время. Внимательно

читайте комментарии в листинге 7.2 — как говорится, лучше один раз

увидеть, чем сто раз услышать.

// Файл модуля random_image (index.php)

// Запрещаем прямой вызов модуля

if (1defined(»MODULE_FILE»)) {

die («You can’t access this file directly…»);

}

// Подключаем mainfile.php — обязательно

require_once(«mainfile.php»);

// Переменная $module_name содержит имя модуля

$module_name = basename (dirname ( FILE ));

Глэва 7. Создание собственных модулей для PHP-Nuke

95

II Подключаем языковый файл.

//В зависимости от выбранного пользователем языка

// функция get_lang() сама подключит нужный файл

get_lang($module_name);

// Если переменная $index=l, то будут отображены правые блоки,

// иначе их не будет.

$index = 1;

// Вставляем шапку сайта

include(«header.php»);

// Открываем таблицу для вывода данных

OpenTable ();

// Начинается код модуля. Любое содержимое можно вывести с помощью echo

// Для совместимости с РНР 4 и РНР 5 используется код для РНР 4

// Это наш каталог, в котором будут храниться картинки

$dir = ‘modules/random_image/images/’;

// Открываем каталог

$dh = opendir($dir);

// Читаем список файлов

while (false !== ($filename = readdir($dh)))

{

$files[] = $filename;

}

// Получаем случайное число от 2 до ?, где N — число

// элементов каталога

$k = mt_rand(Of count($files)-1);

// Выводим нашу константу

echo «» . RNDJTITLE . «/center>«;

‘/ Выводим картинку

echo «

«;

96

Часть II. PHP-Nuke

// Конец кода модуля

// Закрываем таблицу

CloseTable();

// Вставляем нижнюю часть сайта

include(«footer.php»);

?>

Файл модуля нужно назвать index.php и поместить в каталог random_image.

Из листинга 7.2 видно, где заканчивается обязательная подготовительная

часть любого модуля и начинается его код. Также видно, где наш

(пользовательский) код заканчивается.

Для проверки модуля вам нужно загрузить каталог random_image в каталог

modules Web-сервера, а затем активировать модуль (см. главу 6).

7.2. Работа с базой данных

В данной главе мы создали довольно простой модуль, работающий с

файлами. Более сложные модули взаимодействуют с базой данных. Система PHP-

Nuke не накладывает никаких ограничений на работу нашего кода, поэтому

мы с легкостью могли бы использовать для работы с базой данных функции

mysqi*, но это было бы не совсем правильно. Да, работать будет, но гораздо

корректнее обращаться к базе данных через средства PHP-Nuke.

Начнем с самого начала. Доступ к базе данных осуществляется через

глобальные переменные $db и $pref ix. Первая — это объект для доступа к базе

данных, причем не важно, к какой именно, ведь PHP-Nuke поддерживает

несколько серверов баз данных. Вторая переменная — это префикс таблиц

PHP-Nuke. Если у нас будут только собственные таблицы, а не таблицы PHP-

Nuke, то данный префикс можно опустить. Поэтому первым делом нам

необходимо определить эти глобальные переменные: