Perkėlimas (angl. transclusion) – tai technika, kai vieno elektroninio dokumento (ar jo dalies) turinys rodomas kituose dokumentuose be fizinio kopijavimo. Pakeitus pradinį turinį, pokyčiai automatiškai atsispindi visuose puslapiuose, kuriuose tas turinys yra perkeltas. Abu puslapiai lieka susieti per hipertekstu. Žodis kilęs iš lotyniško trans („per“) ir anglų inclusion („įtraukimas“) — t. y. „įtraukti tai, kas perkelta iš kitos vietos“.
Kaip tai veikia
Vikipedijos ir kitose Wiki sistemose perkėlimas atliekamas taip: kai tekste naudojate dvigubus skliaustelius, pvz. {{ }},, programinis variklis nuskaito puslapio šaltinio kodą (pvz. "Wiki" šaltinio kodą), suranda nuorodą į kitą puslapį ir prieš konvertuodamas likusį turinį į HTML, įterpia to kito puslapio jau sugeneruotą HTML turinį toje vietoje. Parazitiniais terminais — puslapis „įtraukiamas“ (transcluded) į dabartinį puslapį ir galutinis variantas rodomas naršyklėje (naršyklėje).
Pritaikymas Vikipedijoje
Vikipedijoje perkėlimas dažniausiai naudojamas šablonams: mažoms pakartotinai naudojamoms teksto dalims, infoboxams, žymekliams ir kitiems komponentams. Šabloną įrašius į kelis straipsnius, jo pakeitimai automatiškai atsispindi visuose vietose, kur jis panaudotas. Taip pat galima perkelti ir visą straipsnį ar tam tikrą jo skyrių, tačiau dažnoji praktika — organizuoti pakartotinai naudojamą turinį kaip šablonus.
Valdymas ir ribojimai
- Dalinis įtraukimas: yra būdų įtraukti ne visą puslapį, o tik jo dalį (pvz., konkretų skyrių) arba žymėti, kuri puslapio dalis bus perkeliama. Tam dažnai naudojamos specialios žymos, tokios kaip <onlyinclude>, <noinclude> ir <includeonly>, kurios nurodo, ką ir kaip įtraukti.
- Išvengti pertekliaus: norint pašalinti tam tikras perkelto puslapio dalis ar keisti jų pateikimą taikant konkrečias sąlygas, galima naudoti parametrus, sąlygines funkcijas ir pritaikytą šablono logiką.
- Rekursija ir saugumas: perkėlimas gali būti vykdomas daugeliu lygių — vienas puslapis gali įtraukti kitą, kuris savo ruožtu įtraukia trečiąjį ir t. t. Siekiant išvengti begalinių ciklų (kad parseris neužstrigtų arba serveris nebūtų apkrautas), MediaWiki ir kitos Wiki platformos nustato ribą, kiek lygių įtraukimų leidžiama.
Svarbūs skirtumai ir papildomos technikos
- Perkėlimas vs. kopijavimas: perkėlimas rodo nuolatinę nuorodą į šaltinį, todėl atnaujinus šaltinį visi vartotojai mato naują versiją. Kopijuojant turinį įdiegiamas statinis dubliavimas, kuris po to turi būti atnaujinamas rankiniu būdu.
- subst: MediaWiki leidžia vietoj įtraukimo naudoti subst: prefiksą, kuris kopijuoja šablono turinį į puslapį vienkartiniu veiksmu (t. y. įterpiama kopija, kuri vėliau nebesikeičia automatiškai).
- Šablonų parametrai: šablonai gali priimti parametrus — tai leidžia tas pačias įtrauktas struktūras pritaikyti skirtingoms situacijoms (pvz., kintama antraštė, paveikslėlis ar tekstas).
- Našumas ir talpykla: dėl dažnų įtraukimų puslapio generavimas gali būti brangesnis, todėl dažnai naudojama talpykla (caching). Tai reiškia, kad atnaujinimai kartais matomi su nedideliu delsos laiku, kol talpykla atsinaujina.
Privalumai ir trūkumai
- Privalumai: centrinis turinio valdymas, mažiau pasikartojimų, paprastesnės masinės pataisos, vieningas stilius ir struktūra.
- Trūkumai: gali būti sudėtingiau suprasti puslapio generavimo grandinę naujiems redaktoriams; per didelis įtraukimų lygis gali paveikti našumą; neteisingai sukonfigūruoti šablonai gali sukelti nepageidaujamą turinio rodymą ar ciklus.
Praktiniai patarimai redaktoriams
- Naudokite šablonus, kai ta pati informacija kartojasi daugelyje vietų ir ją gali tekti dažnai atnaujinti.
- Aiškiai dokumentuokite šablonų parametrus ir naudojimo pavyzdžius jų puslapiuose, kad kiti redaktoriai galėtų lengvai suprasti, ką perkeliate ir kodėl.
- Saugokitės begalinių įtraukimo ciklų: patikrinkite priklausomybes ir ribokite rekursiją, kai tai įmanoma.
- Jei norite, kad įterptas turinys būtų vienkartinis (neautomatiškai atnaujinamas), naudokite subst: arba rankinį kopijavimą, suprasdamas jo trūkumus.
Apibendrinant, perkėlimas yra galingas įrankis Vikipedijoje ir kitose Wiki sistemose: jis leidžia valdyti pasikartojantį turinį centralizuotai, mažina klaidų riziką ir palengvina atnaujinimus, tačiau reikalauja atsargumo valdant sudėtingas priklausomybes ir našumo aspektus.