XML файл на модула CMS Joomla 2

И така, нека започнем да разработваме модул с XML файл. Този файл служи за няколко цели. И така, елементът за маркиране на разширението има атрибути за указване на типа (типа), версията (версията), клиента (клиента); тези. администратора на уебсайта и метода на модула, който се разработва. Тези атрибути се използват от Joomla Extension Installer по време на инсталационния процес. Елементът за маркиране на файлове предоставя списък с файлове и папки (иначе наричани декларация), откъдето инсталаторът на разширение Joomla може да разбере кои файлове и папки са специфични за инсталираното разширение. Това прави възможно копирането на файлове по време на инсталацията и изтриването им, докато деинсталирате самия модул.

Първата част на изходния код от XML файла на разработвания модул е ​​показана в списъка по-долу.

Изходен код от mod_joompro_articles_author .xml файл (част 1)

Този код е подобен на кода в модула moduserslatest. xml. По-специално, елементът за маркиране на име обозначава името на папката, както и името на основния PHP файл и XML файла на самия този модул. И файлът за поддръжка на системния език .sys.ini съдържа ключ за превръщане на това име в нещо по-четливо и описателно, когато модулът се появи в компонента Module Manager. Пример за такъв ключ е даден по-долу.

Този ключ също е посочен в описателния елемент на маркировката, като по този начин предоставя описанието на този модул. Ключът за описание на модула е дефиниран и в двата езикови файла за поддръжка.

Елементът за маркиране на файлове се различава малко по своето съдържание от подобния елемент за маркиране на модула mod_users_latest. Първият вложен елемент за маркиране на име на файл има атрибут на модул, който указва името на модула и указва файла, който да се зареди, когато модулът бъде изпълнен. Както в модула mod_users_latest, в този случай е посочена папката tmpl, където е поставен файлът за изграждане на модула. След това изброява helper.php, index.html файловете и самия XML файл. За напомняне, изброяването на XML файла не е задължително, но все пак е желателно.

Разликата между този примерен модул от предишния се крие по-специално във факта, че елементът за маркиране на папка се добавя към разглеждания тук XML файл, в който е посочена папката за поддръжка на езика на модула. Тази папка ще съдържа подпапка с два файла с разширението. ini, за всеки език, включен в модула.

Втората част на изходния код от XML файла на разработвания модул е ​​показана в листинг 6.5.

Изходен код от файла mod_joompro_articles_author.xml (част 2)

Тази част от XML файла определя специалните параметри на модула, който се разработва. Има три такива параметъра. Първият се нарича count и се използва за въвеждане на броя статии за показване. По подразбиране този номер е 5, но потребителят може да посочи произволен брой статии. Обърнете внимание как е зададен този параметър: от потребителя не се изисква да въведе валидна целочислена стойност; той може да въведе и текст. По-нататък в тази глава ще обсъдим някои подходи за подобряване на валидирането на дадено поле на параметър.

Всеки атрибут стойност указва точното име на колона на таблица от базата данни, която ще се използва в клаузата ORDER BY на SQL заявка за сортиране на списъка със статии. В допълнение към името на колоната е посочен идентификаторът a. от тази таблица. И когато формирате заявка, трябва да посочите името на таблицата, използвайки оператора FROM с думата AS a, както е показано по-долу.

По този начин стойността, избрана от параметъра за подреждане на членове, може да се използва директно в заявката за база данни.

И последният в списъка по-долу е параметърът article_ordering_direction, който определя реда на сортиране на статиите в списъка. Може да бъде зададена на една от двете незадължителни стойности: ASC или DESC. Избраната стойност се вмъква директно в заявката към базата данни и по-специално в клаузата ORDER BY, за да се посочи редът на сортиране на резултатите от заявката във възходящ (ASC), както обикновено, или низходящ (DESC).

Трябва да се отбележи, че маркирането на article_ordering и article_ordering_direction включва атрибут validate = "options", за да се провери дали стойностите на тези параметри, въведени в подадения формуляр, съвпадат с тези, посочени в списъка. Това е много важна предпазна мярка, за да се предотврати предаването на невалидни данни във формуляра на нападателя. Ще се върнем към този въпрос по-късно в тази глава.

И последната част от изходния код от XML файла на разработвания модул е ​​показана в списъка по-долу.

Изходен код от файла mod._joompro_articles_author.xml (част 3)

Тази част от кода е точно копие на незадължителния елемент на полето от XML файла за маркиране на всеки друг модул в предния край на уебсайта (например mod._articles_archive.xml). Той определя следните стандартни параметри на модула.

  • Оформление - име на файла на допълнителното алтернативно оформление.
  • Суфикс на клас модул Е суфикс на допълнителен клас CSS за стилизиране на отделни екземпляри или модули.
  • Кеширане - активиране или отмяна на кеширащия режим за даден екземпляр или модул.
  • Време за кеширане - период от време в секунди, заделен за използване на кешираното копие на модула.

Четвъртият параметър, cachemode, демонстрира много важно свойство на полетата в класа JForm. Полето за този параметър съдържа стойността на атрибута type = "hidden", който указва скрития тип. Това означава, че това поле ще бъде запазено като всяко друго поле. Но тъй като е скрит, потребителят изобщо няма да го види и следователно не може да го промени. Това поле се визуализира като HTML входен елемент за маркиране с атрибут type = "hidden", т.е. колко скрито.

Както беше обяснено по-рано, имайте предвид, че нападателите все още могат да манипулират скрити елементи на формуляра, използвайки например добавка за уеб браузър като Firebug. Следователно скритите полета винаги трябва да се проверяват за валидност. Това трябва да се направи от съображения за сигурност, а не само заради удобството на потребителския интерфейс. С други думи, когато използваме някаква стойност в кода, трябва да предприемем същите защитни мерки срещу появата на неочаквани или злонамерени стойности в скрити полета, както в полетата с обикновена форма.