Ние създаваме CNC за нашите компоненти в Joomla 1

В Joomla 1.5 механизмът за генериране на връзки е напълно преработен. Сега можете да анализирате връзките си както желаете, правейки ги четими за хора. Друго важно нововъведение е, че вече не е необходимо включването на модула mod_rewrite на Apache.

Псевдоними

Псевдонимът обикновено се определя от потребителя при създаване на връзката към менюто, но трябва да се уверите, че изискванията по-горе за защитен URL адрес са изпълнени. Най-лесният начин да направите това е да използвате метода на класа Jtable::check(). Ето как изглежда в пример:

Охлюв

За да продължим примера, „охлювът“ „1welcometojoomla“ има две части. Първата част е идентификаторът на статията, а втората е псевдонимът. Те са разделени с тире. Тези два елемента се комбинират в модела при заявка към базата данни:

JRoute

Методът JRoute::_() преобразува нашите Joomla връзки в персонализирани връзки. JRoute има три параметъра (същите за js и php):

$url е низ, съдържащ абсолютна или относителна връзка в joomla.$xhtml е булева стойност, която указва дали резултатът трябва да бъде в XHTML. Този незадължителен параметър$ssl е цяло число, което указва дали URI трябва да бъде шифрован. 1 означава, че URI е глобално защитен, 0 е състоянието по подразбиране, когато е бил приет, а -1 означава, че URI не е безопасен.

Най-важният параметър е $url. Методът работи по следния начин:

Друго предимство на JRoute е, че рутерът обработва $option (име на компонент) и $Itemid (идентификатор на меню). Сега връзката не се нуждае от $option и $Itemid, за разлика от предишните версии на Joomla.

Важно е да разберете параметрите на този етап. След това ще преминем към router.php.

Процесът на изграждане на JRouter се състои от двеетапи:

1. Създайте манипулатор на маршрут В приложенията JRouter се грижи изцяло за маршрута и разработчикът на компонента не трябва да прави нищо, за да работи.

2. Създайте манипулатор на компонентен маршрут За да създаде компонентен маршрут, JRouter търси файл router.php в директорията на компонента. Файлът router.php е отговорен за изграждането на връзки за компонента.

Прост пример: Този прост пример ще ви покаже основите на това как работи рутер във вашия компонент.

JRouter предава масива $query към функцията [Componentname] BuildRoute. Тази функция ще добави съответните части към масива $segments в правилния ред. Стойностите на масива на заявката $query трябва да бъдат изключени, в противен случай JRouter ще го добави към URL адреса.

Следната функция в router.php анализира URL адреса:

Какво става тук? Във функцията [Componentname]BuildRoute сме организирали елементите в масива $query в определена последователност. Това означава, че в този пример View е на първо място, catid на второ и id на трето. Четейки $segments[0] ние осъществяваме достъп до View. Избрахме правилния изглед въз основа на стойността на id и върнахме масива $vars на JRouter.

Това е много прост пример. Генерираният URL адрес в този пример съдържа името на изгледа и не отразява съдържанието на йерархията, тъй като показва връзките, както следва: http://www.example.com/[menualias]/[view]/[slug] .

По-сложен пример:

В този пример ще създадем йерархия като тази:

Имайте предвид, че не сме добавили името на изглед към масива $segments. Друго ново нещо тук е допълнителният параметър catid, върху който кликваме върху $ сегментите на масива. Все още деактивираме променливата $query['view'], за да я премахнем от URL адреса.

Друго ново нещо тук е допълнителният параметър catid, който ниепреминете към масива $segments.

Има много различни парчета код в тази функция ParseRoute в сравнение с предишната. Причината е проста. Нямаме името на изгледа в масива $segments и трябва да намерим друг начин да го предадем.

Трябва да разберем на какво ниво от йерархията се намираме, като получим коренния елемент. Правим това, като гледаме името на View в името на активното меню:

Също така трябва да знаем броя на елементите в масива $segments: $count = count( $segments ); С тази информация можем правилно да установим йерархията и в трите възможни случая.

В резултат на това получаваме връзка, която може да се чете от човека.