SSI-ն (server side includes) պարզագույն մեթոդ կամ միջոց է, որը թույլ է տալիս ինչպես խնայել վեբվարպետների ժամանակը (որը, որպես կանոն, չի տեղավորվում օրվա 24 ժամերի սահմաններում), այնպես էլ «թեթեւացնել» կայքի բոլոր էջերը։ Սովորաբար, SSI-ի նման «օժանդակությունից» չեն օգտվում միայն վեբ-սկսնակները (հատկապես՝ ինձ նման ինքնուսույցները), այն էլ՝ մինչեւ այդ մասին տեղեկանալը։ Պատկերացրեք, որ ունեք 50 էջից բաղկացած վեբկայք, որի մեջ օրերից մի օր ցանկանում եք փոփոխել ինչ-որ մի տարր, ասենք՝ Ձեր կայքի լոգոն։ SSI չպարունակող կայքի դեպքում դուք ստիպված եք լինելու այդ փոփոխությունը կատարել… բոլոր 50 էջերում։ Ի տարբերություն վերջինիս, SSI-ների վրա կառուցված վեբկայքի պայմաններում, դուք այդ փոփոխությունը կիրականացնեք միայն 1 ֆայլի սահմաններում (այն SSI-ի, որը պարունակում է կայքի լոգոն), որի արդյունքում, այդ փոփոխության արդյունքները կարտացոլվեն բոլոր 50 էջերում (որոնք ի սկզբանե պարունակում են նույն այդ արդեն իսկ փոփոխության ենթարկված SSI-ֆայը)։ Եթե առաջին անգամ եք առնչվում SSI-ի հետ, մի տարակուսեք, որ վերեւի տողերը մի քիչ անհասկանի թվացին Ձեզ. այդ հոդվածի նպատակն էլ այն է, որ «ամեն ինչ ընկնի իր տեղը», եւ եւ այն, ինչ առաջին հայացքից թվում էր անհասկանալի, յուրացնեք լիարժեքորեն։
Նախ, եկեք հասկանանք SSI-ի էությունը։ Այս նպատակի համար եկեք վերհիշենք, թե որեւէ մեկ կայքի սահմաններում, անկախ այն հանգամանքից, թե ինչպիսի մեծության կայքի մասին է խոսքը եւ քանի էջից է այն բաղկացած՝ 50 կամ 5000, ինչպիսի՞ ընդհանրություններ կան այդ 50 կամ 5000 էջերի միջեւ։ Պատասխանը պարզունակ է. էջի որոշ տարրեր կրկնվում են բոլոր էջերում։ Օրինակ, էջի վերնամասը (header), մենյուն (navigation) եւ ստորին մասը (footer), սովորաբար կրկնվում են բոլոր էջերում (ես նշեցի միայն երեք կառուցվածքային տարր, սակայն իրականում դրանց թիվը կարող է լինել ավելի շատ)։ Ավելի հասկանալի լինելու համար, կարող ենք նույն այս օրինաչափությունը դիտարկել հակառակ ուղղությամբ. ինչո՞վ են իրարից տարբերվում նույն կայքի տարբեր էջերը. իհարկե, իրենց բովանդակային մասով (ասենք, տեքստով)։ Մնացածը լրիվությամբ (կամ որոշ փոփոխություններով) համընկնում են մյուս էջերի հետ։
Այս միտքն ավելի ամրապնդելու համար եկեք դիտարկենք այն էջը, որտեղ տեղադրված է այս հոդվածը, որը եւ այս պահին ներկայացված է Ձեր համակարգչի մոնիտորին։ Եթե դուք դիտեք այս էջի HTML կառուցվածքը (բրաուզերի մենյուից՝ Veiw > Source), ապա կհամոզվեք, որ այն ունի որեւէ էջին հատուկ ամբողջական կառուցվածք։ Այսինքն՝ էջը Ձեզ կարտացոլվի որպես ամբողջական 1 ֆայլ։ Իրականում, այս էջն իրենից ներկայացնում է 1 ֆայլ, որն իր մեջ պարունակում է 7 այլ ֆայլեր։ Այս ֆայլերը, որոնք նույն SSI-եր են, պատրաստվել են առանձին-առանձին եւ դրանցից յուրաքանչյուրը ներկայացնում է ամբողջական էջի որեւէ կոնկրետ կառուցվածքային տարր։ Եկեք տեսնենք, թե իրականում ինչպիսի՞ կառուցված ունի նույն այս էջը՝ այնպիսին, ինչպիսին կառուցել ենք մենք։ Սկսենք էջի վերեւի մասից եւ իջնենք ներքեւ։
1. Header (լոգո), ներկայացված է header.php ֆայլով
2. Subheader («Առաջարկել կայք», «Առաջարկել հոդված», որոնման դաշտ) - subheader.php
3. Բովանդակություն (այս հոդվածի տեքստային մասը, սովորաբան անվանում են content)
4. Right Bar (աջից՝ բաժինների թվարկում...) - right_bar.php
5. Footer (էջի ստորին մասը) - footer.php
6. Social Bookmarking (էջի ստորին մասը) - bookmarks.php
7. Counters (էջի ամենաստորին մասը՝ հաշվիչներ) - counters.php
Ինչպես նկատեցիք, բովանդակությունից բացի (3-րդ կետը) մյուս 6 կետերն իրենցից ներկայացնում են SSI ֆայլեր, որոնք չունեն HTML էջին բնորոշ կառուցվածք, նրանք չեն պարունակում HTML, HEAD, BODY, եւ միայն կազմված են կառուցվածքային այն տարրի կոդերից, որը եւ ներկայացնում են։
Այս ամենը ըմբռնելուց հետո, մեզ մնում է միայն հասկանալ, թե ինչպե՞ս ենք մի էջից «կանչում» մեկ այլ ֆայլ, մեր օրինակում՝ ինչպե՞ս ենք այս հոդվածի էջում «ներդնում» մնացած SSI-ֆայլերը։
Եթե մեր էջը .html կամ .htm տեսակի է, ապա SSI-ֆայլը կանչվում է հետեւյալ կոդավորմամբ.
[!--#include file="ճանապարհը (path) դեպի տվյալ SSI-ֆայլը/SSI-ֆայլ” --] *
Եթե մեր էջը .php տեսակի է, ապա SSI-ֆայլը կանչվում է այսպես կոչված PHP-include կոդավորմամբ.
[?php include ("ճանապարհը (path) դեպի տվյալ SSI-ֆայլը/SSI-ֆայլ"); ?]
Դարձյալ մեր օրինակում (մեր էջերը php տիպի են), մենք բոլոր SSI ֆայլերը ստեղծել եւ պահել ենք inc փաթեթում (folder), ուստի այն էջը, որը այս պահին Ձեր առջեւում է, ունի հետեւյալ կառուցվածքը։
...
<?php include ("inc/header.php"); ?>
<?php include ("inc/subheader.php"); ?>
Բուն հոդվածը (այս մասը սովորաբար անվանում են՝ բովանդակություն (content))
<?php include ("inc/right_bar.php"); ?>
<?php include ("inc/footer.php"); ?>
<?php include ("inc/bookmarks.php"); ?>
<?php include ("inc/counters.php"); ?>
...
Մյուս հոդվածները ներկայացնող էջերում վերոնշյալ կառուցվածը կպահպանվի նույնությամբ՝ ԲԱՑԱՌՈՒԹՅԱՄԲ բուն հոդվածից (կամ էջի բովանդակությունից), որը տարբեր էջերի համար կլինի տարբեր։ Էջի մնացած կառուցվածքային տարրերը, որոնք ներկայացվում են SSI-ներով, կարող են պահպանվել նույնությամբ կայքի մնացած էջերում։
Ավելորդ չեմ համարում նշել, որ էջի HTML կառուցվածը Veiw > Source-ով դիտելիս դուք չեք էլ նկատի SSI ֆայլերը, այլ կտեսնեք այն կոդերը, որոնք պարունակվում էին այդ ֆայլերում: Այսպիսով, մեր այս հոդվածի էջը՝ որպես ֆայլ, ավելի պարզունակ, կարճ եւ «թեթեւ&raqio; է, քան նույն նույն այդ ֆայլի Veiw > Source-ով արտացոլումը։
Հասկացա՞ք SSI-ի գաղտնիքը։ Այժմ տեսնենք, թե ի՞նչ կտա էջի նման կառուցվածքը։
1. Էջը դառնում է «թեթեւ» (կարծում եմ, տեսնելով էջի վերոնշյալ կառուցվածը եւ այն, ինչ կտեսնեք նույն էջը Veiw > Source-ով, կհամոզվեք ինքներդ)։
2. Կայքի ձեւավորումը եւ վերաձեւավորումը դառնում է ավելի դյուրին: Պե՞տք է փոխել էջի հաշվիչը (մեր դեպքում՝ ShinyStat-ը, խնդրեմ, դուք փոփոխեք միայն counters.php-ն, եւ Ձեր այդ փոփոխությունը կարտացոլվի բոլոր այն էջերում, որոնք պարունակում են counters.php SSI-ն)։ Կամ, եթե տվյալ էջում չեք ցանկանում ցուցադրել որեւէ SSI, պարզապես այդ էջում չեք գրում այդ ֆայլի
ՈՒՇԱԴՐՈՒԹՅՈՒՆ. F5 ուղեցույցի էջերում հրատարակված նյութերը հանդիսանում են F5 Team-ի եւ հոդվածի հեղինակների սեփականությունը: