Ինչից է բաղկացած Drupal 7 մոդուլը։
Նախքան սկսել մեր մոդուլի ստեղծումը, ես դեռ մի քիչ կպատմեմ Drupal API-ի հնարավորությունների մասին։ API-ն տալիս է լայն հնարավորություններ՝ աշխատելու Տաքսոնոմիայի, նոդերի, օգտագործողների, ԲԴ մուտքագրման և արտածման հետ։ Դրուպալում գոյություն ունի հուկերի համակարգ, որը նախատեսված է մոդուլների և միջուկի, ինչպես նաև մոդուլների միջև փոխկապակցության համար։ Հուկը հետադարձ կանչվող ֆունկցիա է (callback), այսինքն՝ երբ կոդի կատարումը հասնում է հուկին, կատարվում է մեր ֆունկցիայի կցում՝ որը մենք գրում ենք մեր մոդուլում։ Այդպես մենք կարող ենք մշակել օգտատիրոջ տվյալները, մենյուները, տաքսոնոմիաները, տարբեր կոնտենտ տեսակների նոդերը։
Հաջորդ էջում՝
http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7
ներկայացված է Drupal-ի միջուկի հուկերի ցանկը։ Նկատեք, որ միջուկի տարբեր տարբերակների համար հուկերի ցանկը տարբեր է։ Ես պատրաստվում եմ ստեղծել մոդուլ Drupal 7-ի համար, հետևաբար մենք կօգտագործենք համապատասխան հուկ այդ տարբերակի համար։
Drupal-ի հուկերը ունեն հետևյալ տեսքը՝
module_name_hook_name
Այն տեղերում, որտեղ հուկի անունում գրված է hook, այդ տեղը պետք է փոխարինել ձեր մոդուլի անվամբ՝ որտեղ հուկը օգտագործվում է։
Սկզբում անհրաժեշտ է ստեղծել մոդուլը։
1. sites/all/modules
թղթապանակում ստեղծեք մի թղթապանակ՝ ձեր մոդուլի ապագա անվանումով։ Ես իմը կկոչեմ site-made
։
2. Մոդուլի թղթապանակում պետք է ստեղծել երկու ֆայլ՝ module_name.info
և module_name.module
։ Իմ դեպքում դրանք կլինեն sitemade.info
և sitemade.module
։
3. sitemade.info
ֆայլում գրեք հետևյալը․
;$Id$ // Այս մեկնաբանությունը պարտադիր չէ, բայց հարմար է drupal.org-ում մոդուլը բեռնելու համար name = Sitemade module // Մեր մոդուլի անունը մոդուլների ցանկում package = sitemade // Փաթեթի անունը, որին պատկանում է մեր մոդուլը core = 7.x // Դրուպալի տարբերակը files[] = sitemade.module // նշում ենք այն ֆայլերը, որոնք պարունակում են PHP կոդ
sitemade.module
ֆայլում գրենք php-ի մեկնարկային տողը՝
<?php // Տեգը կարելի է չփակել //$Id$ // նույնպես ավելացվում է՝ drupal.org բեռնելու հարմարության համար
Այժմ մեր մոդուլը պետք է հայտնվի մոդուլների ցանկում։ Միացնենք այն։
Այժմ, երբ մոդուլը միացված է, կարող ենք ավելացնել կոդ։ Առաջարկում եմ հեռացնել History (Պատմություն) տեքստային բլոկը օգտագործողի էջից։
Նախ նայենք ինչպես է դա աշխատում։ Մեզ անհրաժեշտ կլինի hook_user_view
հուկը։
http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_view/7
Այս հուկի իմաստն այն է, որ երբ Դրուպալը կատարում է օգտատիրոջ էջի դիտման համար անհրաժեշտ կոդը, մեր մոդուլի հուկը ներառվում է այդ գործընթացում։ Մեր մոդուլում մենք կհեռացնենք օգտագործողի account զանգվածից այն տվյալները, որոնք վերաբերում են Պատմությանը։ Բացեք sitemade.module
ֆայլը և ավելացրեք հետևյալ կոդը․
function sitemade_user_view($account, $view_mode, $langcode){ print_r($account); }
Պահպանեք ֆայլը և մաքրեք Դրուպալի քեշը, որպեսզի հուկը ակտիվանա։ Էջի վերևում դուք պետք է տեսնեք որոշ տվյալներ։
Սա իրականում $account զանգվածն է, որը փոխանցվում է hook_user_view
հուկով, իսկ print_r ֆունկցիան տպում է այն։ Եթե դուք օգտագործում եք Mozilla Firefox (խորհուրդ է տրվում կայքերի մշակումների համար), սեղմեք CTRL+U՝ էջի աղբյուրը դիտելու համար, և կտեսնեք այս զանգվածի պարունակությունը։
Ուշադրություն դարձրեք uid
և name
դաշտերին՝ դրանք հաճախ օգտագործվում են օգտատիրոջ էջին կամ նրա ստեղծած նյութերին հղումներ ստեղծելու համար։
Ինչպես տեսնում ենք, այստեղ միայն օգտատիրոջ տվյալներն են։ Պատմություն բլոկի մասին տեղեկատվություն չկա։ Փորձենք օգտագործել hook_user_view_alter
հուկը։
http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_view_alter/7
Փոխենք մոդուլի կոդը այսպես․
function sitemade_user_view_alter($account, $view_mode, $langcode){ print_r($account); }
Պահպանեք փոփոխությունները։ Տպված զանգվածը պետք է փոխված լինի՝ account
դաշտը այժմ պարզապես դաշտ է ընդհանուր զանգվածում։ Իսկ summary
դաշտում կա Պատմություն բլոկի տվյալը։ Փորձենք հեռացնել այս դաշտը։ Դա անում ենք unset ֆունկցիայով։
function sitemade_user_view_alter($account, $view_mode, $langcode){ unset($account['summary']); print_r($account); }
Ես հեռացրի summary
դաշտը, սակայն Պատմություն բլոկը մնաց։ Ինչո՞ւ։ Քանի որ ֆունկցիայի պարամետր $account
-ը փոխանցվել է որպես սովորական փոփոխական։ Այսինքն՝ մենք փոփոխություններ ենք անում ֆունկցիայի ներսում միայն այդ տեղային պատճենով։ Պետք է այն փոխանցել ըստ հղման՝ այդ փոփոխականի վրա ազդելու համար։ Այսինքն՝ ավելացնենք ampersand (&
) նշանը՝
function sitemade_user_view_alter(&$account, $view_mode, $langcode){ unset($account['summary']); print_r($account); }
Պահպանեք ֆայլը և մաքրեք քեշը։ Պատմություն բլոկը պետք է անհետանա։ Այդ &
նշանը ստեղծում է հղում դեպի $account
փոփոխականը։ Ավելին՝ PHP հղումների մասին կարող եք կարդալ ցանկացած PHP ծրագրավորման ձեռնարկում։