В
любой момент можно изменить содержимое блока без проблем
редактируя xoops_version.php и обновив модуль (повторно). Мы
можем установить вторую функцию, которая появится в Админ_меню –
которая будет недоступной незарегистрированным пользователям.
Редактируя xoops_version.php, добавьте:
// функция вызова администрирования вашего блока
$modversion['blocks'][1]['edit_func'] = "b_mymodule_edit";
Эта функция для Вас добавляет только крошечную форму, чтобы изменить четвертое значение опции. Обратите внимание что первые три $form . . . строки кода должны только для сохранения существующих значения других опций. RunCms перезаписывает варианты в той последовательности, как они появляются в $form, так что они Вам необходимы для появления в правильном порядке.
Чтобы использовать нашу новую опцию, мы должны изменить одну строку в функции b_mymodule_show в этом файле:
$content .= "Today is a ".$options[$num]." day."; поменять на:
$content .= "This ".$options[3]." is a ".$options[$num]." ".$options[3].".";
Но, это - все еще мелочи...
Теперь
сохраните файл с функциями и xoops_version.php и обновите снова
Ваш модуль в Панеле управления модулями. Теперь в блоке
можно прочитать текст "This day is a red day." Или 'blue' или 'white'.
Отлично.
Для редактирования опций вашего блока идите в меню :
Управление блоками и выберите 'My Block' - > 'Редактировать'
для изменений Вашего блока. Ближе к низу экрана вы должны увидеть
небольшое поле для ввода текста. Измените в нём с 'day' на,
скажем, 'tree'. Выберите СОХРАНИТЬ в выпадающем ниже списке,
подтвердите и перейдите на главную страницу (там где расположен ваш
блок). Теперь текст в вашем блоке должен быть: 'This tree is a blue
tree." Или что-нибудь подобное.
OK. Мы теперь имеем возможность
управлять нашим блоком. В Окне редактирования Блока, Вы будете видеть,
что есть ещё некоторые другие варианты добавления информации к нашему
блоку. Экспериментируйте с ними, чтобы видеть, как они работают. Вы
можете создать простые, но эффективные целые Блоки, используя новый
редактор Блока.
Мы закончили с блоками. Вернёмся к главному модулю.
Добавление пунктов меню
В
настоящее время, модуль только имеет один пункт меню, который вызывает
файл index.php. Добавим теперь другие страницы. Вернёмся к
xoops_version.php и добавьте эти две строчки кода:
Заметьте,
что ['sub'][1] –первый пункт подменю, мы можем продолжить и
добавить ['sub'][2], например, а вместо использования текстовой
строки «Page 2» можно использовать новую строковую константу
например _MI_MYMODULE_PAGE2 . Это поясняется для простоты.
Теперь создадим Вашу page 2. Откройте index.php, сохраните её как page2.php и измените на следующее похожие строки:
$title = "Page 2 Title";
$content = "All the things I want to say on my second page";
Вот
и всё. Сохраните файлы, обновите модуль и перейдите на стартовую
страницу. Теперь Вы должны увидеть Page 2 как подпункт в меню.
Щелчок на этом пункте отобразит Вашу новую страницу Page 2 .
Деинсталляция модуля.
Чтобы
сделать последующие изменения, мы должны временно деинсталлировать наш
модуль. Этот процесс - в 2 шага.
Сначала, в выборе Администрирование Модулей -> Деактивируют модуль, выбирая пункт из
раскрывающегося списка, затем подтверждают дважды как обычно.
Второй
шаг: возвращаемся к Администрированию Модулей, и на сей раз, выбираем
Деинсталляцию в раскрывающемся списке, также дважды подтверждая. Вы
увидите сообщение, что ваш модуль деинсталлирован.
Дополнительно - MySQL
Все
пока было довольно статическое, даже с нашими четырьмя опциями блока.
Теперь наступило время, чтобы добавить немного больше данных к
нашей странице. Мы уже имеем некоторый случайный текст в нашем
блоке, таким образом мы добавим некоторые случайные цитаты в нашей
основной странице. Для этого мы нуждаемся в очень простой базе данных.
В
вашем редакторе создайте новый файл и сохраните как: mysql.sql в
подпапке sql . Теперь добавляем следующий код для создания таблицы базы
CREATE TABLE myquotes (
id int(11) DEFAULT '0' NOT NULL auto_increment,
quotes text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
Теперь добавим некоторые данные в эту таблицу:
INSERT INTO myquotes
VALUES (1, '<CTRL>-<ALT>-<DEL> is the key to success');
INSERT INTO myquotes
VALUES (2, '11th Commandment: covet not thy neighbours Pentium.');
INSERT INTO myquotes
VALUES (3, '1st rule of intelligent tinkering - save all the parts');
INSERT INTO myquotes
VALUES (4, '90% of all statistics are made up');
INSERT INTO myquotes
VALUES (5, 'A day for firm decisions!!!!! Or is it?');
Измените строки на ваши любимые высказывания, которые Вам более по душе. Сохраните файл.
Поскольку
RunCms пока ничего не знает о вашей таблице базы данных, необходимо
зайти в xoops_version.php и сообщить системе об этом
Мы могли иметь и больше таблиц, например: ['tables'][1] .
Еще
одну часть кода необходимо добавить, чтобы мы могли видеть вывод из
нашей новой таблицы базы данных. Откройте index.php и добавьте этот код
до строки с themecenterbox :
Этот
код делает доступным базу данных RunCms; делает запрос к таблице нашей
новой базы данных; выбирает цитату наугад и делает готовым её показать.
Отметьте, что это - очень простой код для демонстрации показа как
RunCms работает, при этом , если цитата не будет найдена, произойдёт
ошибка.
Сохраните файл, перейдите в Администрирование модулей и
переустановите ваш модуль MyModule. RunCms создаст таблицу в базе
данных и поместит в неё пять записей.
Перейдите на главную страницу,
выберите в меню MyModule и страница отобразит заголовок и одну из
ваших цитат. Обновите страницу и увидите, что цитата тоже изменилась.
ОК, почти всё сделано.
Добавление в Админ-меню
Мы
имеем только пять цитат в нашей небольшой базе данных. А что делать,
если мы видим другую хорошую цитату и хотим включить её в базу?. Нам
необходим механизм добавления новой записи (цитаты). Мы могли поместить
это на общую страницу или в блок, но в действительности мы хотим
сохранить это как часть нашей системы администрирования. Таким образом,
мы добавим пункт к Меню Администрирования модуля MyModules.
Откроем xoops_version.php снова и добавим следующие строки:
// Admin things
$modversion['hasAdmin'] = 1;
$modversion['adminindex'] = "admin/index.php";
Создаём новый файл index.php в подпапке admin . Помещаем в него :
Примечание:
Для простоты этой демонстрации я взял три строки include_once вместо
отдельного файла admin_header.php и не включенного здесь в код. Обычно
есть только строка с include_once (admin_header.php); Посмотрите на другие модули, чтобы видеть, как это сделано там.
Данные
включаемые файлы делают доступными отдельные функции RunCms, такие
как xoops_cp_header() и OpenTable(), так же как и некоторые
функции базы данных в этом коде.
Сохраните Ваши файлы снова, опять
обновите модуль и Вы увидите, что лого MyModule теперь появляется
в левом столбце логотипов модулей, установленных в Панеле Управления
модулями. Нажмите на логотип, и простое текстовое поле покажется справа
между контрольной панелью администрирования и нижним колонтитулом.
Введите вашу новую цитату в текстовое поле, и щелкните Отправить.
Покажется чистая страница Перейдите на Главную страницу сайта , нажмите
на меню MyModule, и затем обновите страницу MyModule, через несколько
обновлений Вы увидите Вашу новую цитату.
Почти окончание.
Это
всего лишь обучающий материал. Мы прошли через все главные части
строительства (формирования) модуля. Вот – то немногое, что мы не
охватили для Вас:
Вы можете добавлять подпункты в админменю .
Вы
можете добавить код, чтобы делать ваш модуль доступным для поиска в
системе поиска сайта. Вы можете использовать намного более сложный код,
чем здесь!
Обратите внимание, что я не использовал никаких таблиц
HTML или форматирующих элементов. Вы сами можете добавить их, чтобы
формировать ваш вывод;
И при этом я не включил
никакой проверки ошибок, безопасности или любой из других особенностей,
в которых Вы нуждались бы в полномасштабном модуле.
RunCms имеет
целое семейство встроенных функций, чтобы сделать вашу жизнь проще. В
особенности $myts (MyTextSanitizer) группа может быть действительно
ценной в контроле ввода и представления. Будьте внимательны, если Вам
потребуется ввести кавычки, угловые скобки, символы цитат, слэши и
т.д. Возможно - они будут отображены не так, как Вы ожидаете.
Ваш
xoops_version.php файл будет иметь неупорядочный вид, потому как
строчки кода мы добавляли наугад . Не торопитесь, отсортируйте строки и
как совет: комментируйте больше и яснее.
Есть другие стандартные
файлы администрирования: menu.php – для подпунктов меню и
admin_header.php для включения файлов, которые здесь не использовались.
Так
же как и в modinfo.php здесь можно использовать другие
языковые файлы: типа main.php, admin.php, и blocks.php.Это
используется, чтобы разделить языковой текст от кода файлов в
соответствующих папках, например текст в главной папке если найден в
main.php и так далее.
Наконец, Вы найдете содержание файлов этой
демонстрации ниже. Я скопировал их с моей рабочей версии, таким образом
этот действительно работает ОК, но я изменил несколько ненужных
деталей, включая название модуля таким образом могут быть немного
сбоев, если Вы используете операции вырезать/вставить. Лучше работайте
шаг за шагом, чтобы видеть, что у вас получается.