Es centīšos aprakstīt S2 stila uzbūvi un kā tas viss darbojas. Ņem vērā, ka dokumentāciju rakstīšana nav mana stiprā puse. Bet ceru, ka vismaz kāds to sapratīs un izmantos. Kad es pirmoreiz redzēju S2 kodu, tad nesapratu, ko ar to vispār var izdarīt, lai pielāgotu savām vajadzībām. Tas likās neizprotami. Bet patiesībā S2 nav sarežģīta! Vienkārši izmēģini.
Klases Page
ģimenes koks
Page
|– RecentPage
| |
| FriendsPage
|– EntryPage
|– ReplyPage
|– YearPage
|– MonthPage
|– DayPage
Tāda, lūk, ir S2 stila uzbūve. Tas ir koks, kurā attēlotas klases un to attiecības
ģimenē un pēc nāves (mantošana). :)
Page ir pati galvenā klase. Un, kas definēts šajā klasē, attiecas
uz visām atvasinātajām klasēm (bērniem).
Piemēram, manā stilā Page::print
funkcija satur visu kopā. Tajā atrodas pati HTML lapa un tiek izsauktas vajadzīgās
funkcijas, atkarībā no pieprasītā skata (friends, reply, calendar, ..). Man tas
ir ērti, jo visām lapām tiek nodrošināts vienāds izskats.
Bet var arī darīt savādāk. Piemēram, mp stilā "Debesu Zvani" šādas
funkcijas Page::print
nav vispār. Tur viss tiek salikts kopā katrai
lapai (RecentPage, FriendsPage, EntryPage, ..) atsevišķi. Es nezinu, kāpēc
M. tā darīja, bet, ja jau viņam tā likās ērtāk, tad – kāpēc gan ne. Viņa stilā
universālais saturs atrodas Page::print_custom_head
un Page::print_plain_footer
funkcijās,
kas tiek izsauktas katram skatam.
Vēl viena lieta, kas jāņem vērā rakstot stilu, ir, ka ir iespējams pārdefinēt gandrīz jebkuru (ir izņēmumi) funkciju no core slāņa (layer). Šis slānis ir brīvi pieejams jebkuram. Ja vēlies to redzēt, tad spied šeit. Šķiet, ka šo un visu turpmāko vaidzēja rakstīt pašā sākumā, bet nu labi.
Katram S2 slānim, kuru Tu raksti, gan apakšā, gan virs tā var būt vairāki citi slāņi. Jebkurā gadījumā pašā apakšā būs pats galvenais slānis – core. Tālāk es aprakstīšu katru iespējamo slāni. Tie sakārtoti pretējā kārtībā, kā tie "klājas" viens uz otra. (Programmētājiem koki parasti ir ar saknēm uz augšu.)
type
= "core", name = "LiveJournal S2 Core, v1"
).
Šis slānis definē visas funkcijas un klases, kas ir pieejamas zemākiem slāņiem.
Visā visumā var teikt, ka zemākie (lietotāja veidotie) slāņi ir tāpēc, lai
aizlāpītu caurumus. Jo core slānī viss jau ir un tas var darboties
pats. Taču lielākoties to izmanto kā paraugu un piemēru saviem slāņiem. Zemākajos
slāņos tiek pārdefinētas funkcijas pēc saviem ieskatiem un vajadzībām. Sākot
ar lokalizēšanu un beidzot ar user slāni. Par to būs zemāk.type = "i18nc", name = "Latvian"
) un ir
paredzēts, lai pārdefinētu visu tektuālo informāciju un vēl šo to, kas attiecas
uz katru valodu. Arī watt to
ir izdarījis Sviesta Cibā. Tāpēc jau komentāru saites nosaukums pēc noklusējuma
ir "ir doma", ja Tu izmanto S2 un esi izvēlējies latviešu valodu.
Arī šis slānis ir publiski
pieejams un tajā noteikto drīkst
un var pārdefinēt katrs pats savos slāņos. print_stylesheet()
, kas izvada CSS stila saturu
attiecīgajā vietiņā. Nu, lūk, es viņu varu pārdefinēt savā stilā, lai tā
izvadītu man nepieciešamo CSS. Tik vienkārši. i18n.
Pilnīgs
S2 stils izmanto tekstu gan no internationalization, gan no core
internationalization slāņa.
Šis gan tik ļoti uz Sviesta Cibu neattiecas, jo mēs te visi savējie, vietējie.
:)Tātad pavisam kopā ir seši slāņi, no kuriem Tu vari darboties ar četriem (jo
pirmie divi ir iebūvētie):
=> core
=> i18nc
=> layout
=> i18n
=> theme
=> user
Jā, man patīk zīmēt šēmiņas. :)
Vēl viena lieta, kas iesācējiem varētu noderēt, lai viss sāktu darboties.
Lai varētu izmantot šos slāņus, ir nepieciešams izveidot stilu. Katrā stilā
var būt iekļauti (pievienoti, pieslēgti) no 1 līdz 6 slāņiem. Tam paredzēta
neliela, viegli saprotama forma.
Piezīme. Ja Tev ir vairāki stili, tad, zinot to ID numurus,
Tu vari apskatīties, kā, izmantojot šo stilu, izskatīsies Tavs žūrnāls. Tev
vienkārši žūrnāla adreses galā jāpieraksta "?s2id=xxxx", kur "xxxx" vietā ir
slāņa ID numurs.
Vēl viena piezīme. Lai apskatītos kāda cita lietotāja žūrnālu "savā stilā", :)
adreses galā pieraksti "?style=mine".
Kopsavilkums par slāņiem | ||||||
---|---|---|---|---|---|---|
core |
i18nc |
layout |
i18n |
theme |
user |
|
define classes | x |
|||||
define builtin functions / classes |
x |
|||||
define global functions | x |
x |
||||
define class methods | x |
xa |
||||
define properties | x |
x |
||||
expose properties to graphical wizard | x |
|||||
override name / description of properties | - |
x |
x |
x |
||
override functions / methods of properties | - |
x |
x |
x |
x |
|
set properties | x |
x |
x |
x |
x |
x |
lay_
to
avoid future namespace collisions should the core layer expand. (Šī ir svarīga
piezīme!)
Ū, pats galvenais. Ja nu kāds to vēl nezina, tad pārmainīt lietojamo stilu sistēmu ir iespējams šeit. Ņem vērā, ka, ja Tu lieto S1 un vēlies izmēģināt S2 sistēmu, tad vari to droši darīt, jo Tavs S1 stils paliks neskarts. Tam patiešām nekas nenotiks un, salaižot kaut ko galīgā pakaļā, varēsi mierīgi atgriezties pie vecā, labā S1. Kamēr vien watt nenometīs serveri. :)
Daļa šī puksta ir nākusi no manis, bet lielākā daļa ir tulkota no S2 Manual (PDF fails, 230k). Vēlāk varbūt vēl.