Трансклузията е начин за използване на съдържание от един електронен документ в друг, без да се налага копиране. Ако оригиналното съдържание бъде променено, промяната автоматично се отразява във всички места, където то е включено. Двата документа са свързани чрез хипертекст. Думата произлиза от латинската/английската конструкция trans (през, отвъд) и inclusion (включване) и буквално означава „пренесено включване“ — добавяне на съдържание от друго място.
В Уикипедия и други сайтове, работещи с MediaWiki софтуер, трансклузията най-често се използва за вмъкване на съдържание от специална страница, наречена шаблон, в други статии. Методът обаче е приложим и към други типове страници и блокове съдържание.
Технически, когато в изходния код на уики страница се поставят двойни фигурни скоби {{ }} около име на страница или шаблон, парсерът прочита изходния код на уикито, преобразува го в HTML и вмъква получения HTML на мястото на трансклузията, преди да преобразува останалата част от страницата за показване в браузъра. По този начин съдържанието се „включва“ в реално време при всяко зареждане или при обновяване на кеша.
Как се използва във Вики (основни сведения и синтаксис)
- За да включите шаблон или страница, обикновено се използва синтаксисът
{{Име на шаблон}}. - Шаблоните могат да приемат параметри:
{{Име на шаблон|параметър1|ключ=стойност}}, което позволява да се генерира различно съдържание при едно и също основно тяло на шаблона. - За да се вмъкне страница от основното пространство (а не от пространството на шаблоните), във някои случаи се използва префикс
:, например{{:Име на страница}}, или се посочва име с котва за раздел:{{:Име на страница#Раздел}}, когато е възможно да се трансклузира само даден раздел. - Ако искате да копирате окончателно съдържание на шаблона в статията (без да бъде динамично свързано със шаблона в бъдеще), можете да използвате subst:, например
{{subst:Име на шаблон}}. Това вмъква съдържанието при запазване и след това вече не се обновява при промяна на оригинала.
Контрол върху това, което се трансклузира
В страниците, които се трансклузират, могат да се използват специални тагове, за да се определят кои части да бъдат включвани или изключвани:
<noinclude>...</noinclude>— съдържанието в тези тагове не се трансклузира; полезно за документация или категории, които трябва да са само на оригиналната страница.<includeonly>...</includeonly>— съдържанието в тези тагове се вижда само когато страница е трансклузирана; когато страницата се преглежда самостоятелно, тези части не се показват.<onlyinclude>...</onlyinclude>— ако се използва, само съдържанието между тези тагове се включва при трансклузия; всичко останало се игнорира при вмъкване.
Влагане и ограничения
Страницата, която е трансклузирана, от своя страна може да съдържа трансклузии на други страници — това се нарича влагане (nesting). Възможно е влагането да се случи няколко нива надолу, но системата налага ограничение на дълбочината (брой нива), за да предотврати случайни или злонамерени безкрайни цикли, които да доведат до зацикляне на парсера или претоварване на сървъра.
Ползи и недостатъци
- Предимства: намалява дублирането на съдържание (DRY), улеснява поддръжката — промяна на едно място се отразява навсякъде; позволява централно управление на общи елементи (напр. информационни полета, навигационни блокове, предупреждения).
- Недостатъци и рискове: повишена сложност на шаблоните; трудности при дебъгване, когато множество шаблони се включват един в друг; възможни проблеми с производителността и кеширането при голям брой трансклузии; риск от непреднамерени промени на множество статии при редактиране на общ шаблон.
Алтернативи и други форми на трансклузия в уеб
Извън уики средите, в уеб разработката има различни техники за постигане на подобен ефект:
- Сървърно включване (Server-Side Includes, SSI) — част от съдържанието се вмъква от сървъра преди изпращане към клиента.
- ТEMPLATE системи и рендериране на сървъра (напр. чрез шаблонни енджини), които генерират страницата от множества компоненти.
- Клиентско включване чрез JavaScript (AJAX), iframe или
Практически съвети
- Използвайте трансклузия за съдържание, което се променя често и се използва на много места (напр. предупреждения, стандартни полета, общи пояснения).
- Документирайте шаблоните добре; използвайте
<noinclude>за документация и категории, за да не се появяват в трансклузиите. - Проверявайте ефекта на промяната на шаблоните върху страниците, които ги използват, преди да правите широкомащабни редакции.
Трансклузията е мощна техника за структуриране и поддържане на общо съдържание в уики и по-широко в уеб, но изисква дисциплина в дизайна на шаблоните и внимание към производителността и управлението на версиите.