Transclusion ir veids, kā dokumentā iekļaut saturu no cita elektroniska dokumenta, nepārrakstot to tajā. Ja sākotnējais saturs tiek mainīts, izmaiņas automātiski parādīsies visos dokumentos, kuros tas tiek pārcelts. Abus dokumentus savieno hiperteksts. Vārds transclusion nozīmē, ka saturs tiek iekļauts no citas vietas (no trans — "pāri", un inclusion — "iekļaušana"). Terminu savulaik ieviesa hiperteksta koncepciju autori, un tas ir kļuvis par svarīgu parādību gan wiki sistēmās, gan citos saturu apstrādes risinājumos.

Princips un piemērs wiki vidē

Vikipēdijā transclusion parasti tiek izmantots, lai saturu no īpaša raksta, ko sauc par šablonu, ievietotu citos rakstos. Šabloni satur atkārtoti lietojamus fragmentus — piemēram, infokastes, atsauces, brīdinājumus vai navigācijas blokus — kurus var uzturēt vienā vietā un izmantot daudzās lapās.

Kad lapas saturā liekat dubultās iekavas, piemēram {{ }}, wiki programmatūra nolasa wiki pirmkodu un pārveido to uz HTML, ko parāda pārlūkprogrammā. Parseris redz, ka šajā vietā jāievieto cita lapa vai šablons, nolasīs šo lapu, konvertēs to uz HTML un iekļaus tajā vietā, pirms pamatlapas pārveidošanas turpināšanas. Tas ir transclusion — jūs atsaucaties uz nosauktu lapu (atsauci) un parseris šo saturu iekļauj gala lapā.

Šablonus var padarīt parametrizētus — piemēram, {{Infokaste|nosaukums=...|gads=...}} — tā ļaujot katrā iekļaušanas vietā nodot atšķirīgus datus. Šablonu izmaiņas automātiski atsvaidzina visus to lietotājus, kas nodrošina vienotu un viegli uzturamu saturu.

Kā ierobežot vai izvēlēties daļu no lapas

Ir vairāki mehānismi, kas ļauj kontrolēt, kas tieši tiek pārcelts:

  • <noinclude> — saturu, kas atrodas šajā tagā, neiekļauj, kad lapa tiek transludēta kā šablons; šādā saturā parasti atrodas dokumentācija vai kategorijas, kas jāredz tikai pašā šablona lapā.
  • <includeonly> — saturu, kas ir šajos tagos, var redzēt tikai tad, kad lapa tiek pārcelta citur; pašā šablona lapā tas netiek parādīts.
  • <onlyinclude> — ja lapā ir šie tagi, tikai to iekšpusē esošais saturs tiek iekļauts transclusion; pārējais tiek ignorēts transclusion laikā.

Ir arī iespējas pārcelt tikai konkrētas lapas sadaļu vai izmantot speciālas sintakses paplašinājumus vai parserfunkcijas, lai atlasītu fragmentus; tas atkarīgs no izmantotās platformas un tās iespējām.

Ligzdošana un ierobežojumi

Viena pārceltā lapa var saturēt arī cita lapas pārcēlumu — to sauc par ligzdošanu. Šo iekļaušanu var veikt vairāku līmeņu dziļumā (viena lapa iekļauj citu, kas iekļauj trešo utt.). Lai novērstu nejaušas vai ļaunprātīgas bezgalīgas cilpas, programmatūra parasti ievieš ierobežojumus transclusion dziļumam vai atrod un aptur ciklus (circular inclusions). Tāpat transclusion var ietekmēt lapas veiktspēju, īpaši, ja tiek iekļauts daudz saturu vai tiek veidoti dziļi ligzdoto šablonu tīkli.

Priekšrocības un trūkumi

  • Priekšrocības:
    • Viena informācijas avota princips — ātrāka un drošāka satura atjaunināšana (rediģējot vienu vietu, izmaiņas parādās visur).
    • Samazina dublētu saturu un kļūdu iespējamību.
    • Atvieglo konsekventu noformējumu (piem., infokastes, brīdinājumi, atsauces).
  • Trūkumi:
    • Atkarības — izmaiņas šablonā var ietekmēt daudzas lapas negaidīti.
    • Veiktspējas jautājumi — bieža un dziļa ligzdošana var palielināt lapas renderēšanas laiku.
    • Diagnoze var būt sarežģītāka — reizēm grūti noteikt, no kurienes nāk konkrēts saturs vai stils.

Tehniskie risinājumi ārpus wiki

Transclusion koncepcija pastāv arī ārpus wiki: server-side includes (SSI), veidņu sistēmas web izstrādē, XInclude (XML), komponentu bāzētas sistēmas un web komponentes vai iframe/embed mehānismi. Atšķiras realizācijas detaļas — dažas sistēmas apstrādā iekļaušanu servera pusē (pirms lapas nosūtīšanas uz pārlūkprogrammu), citas izmanto klienta pusi vai specializētus aptverošos rīkus.

Labās prakses

  • Izmantojiet transclusion, lai centralizētu atkārtoti lietojamu saturu (stila elementi, infokastes, standarta brīdinājumi), bet izvairieties no pārmērīgas ligzdošanas.
  • Dokumentējiet šablonus, parametrus un to lietošanu, lai citi redaktori saprastu atkarības.
  • Testējiet izmaiņas šablonos, pirms tās ieviest raidījumā, un izmantojiet kešatmiņas tīrīšanas/pārstartēšanas rīkus, ja nepieciešams, lai redzētu atjauninājumus.
  • Izvairieties no apļveida iekļaušanas; pārliecinieties, ka sistēma ir konfigurēta, lai apturētu potenciālas bezgalīgas cilpas.

Kopumā transclusion ir spēcīgs rīks satura atkārtotai izmantošanai un uzturēšanai, taču tas prasa pārdomātu pieeju, lai saglabātu sistēmas pārskatāmību, veiktspēju un uzturēšanas ērtumu.