DoX CMS:n versio 8.7 lisäsi julkaisuihin niiden julkaisupohjien revisionumeroiden tunnistearvot. Kävin edellisessä artikkelissa läpi yksityiskohtia version 8.7 mukanaan tuomiin eroihin näkymien suodatuksessa. Tällä kertaa esittelen keinoja käyttää näitä lisätunnisteita julkaisujen sisällön ja ulkoasun hallinnoimiseen.
Yleisellä tasolla kyse on julkaisukohtaisien sovituksien laajentamisesta. Jos kukin julkaisu sisältää ainutkertaista sisältöä, vaatisi se muussa tapauksessa vähintään erillisiä tageja jokaiselle julkaisulle oikean sisällön näkyvyyden hallinnoimiseen. Julkaisumuuttujat sallivat lisätä julkaisukohtaisesti vain lyhyitä tekstiosuuksia. Tämä toiminto puolestaan sallii esimerkiksi tietyn sijainnin kuvien vaihtamisen julkaisukohtaisesti.
Selitän ensin kyseisen toiminnon toimintaperiaatteen sekä oletetun käyttötavan. Tämän jälkeen esittelen erinäisiä keinoja soveltaa sitä.
Julkaisukohtaisten tyylisovituksien toimintaperiaate
Tämä toiminnallisuus oli alkujaan nopea ratkaisu tietyn asiakkaan tarpeeseen: Heidän jokaisessa julkaisussaan on kaavio, joka on toimituskohtainen. Kukin toimitus tarvitsee ainutkertaisen kuvan sille määritetyssä sijainnissa. Muilta osin nämä julkaisut käyttävät yhdistelmiä uudelleenkäytettäviä sisältöjä.
Koska kyse on vain lisätunnisteesta, vaatii sen käyttäminen tyylitiedostoja. Kyse on kunkin julkaisupohjan revision yksilöivästä tunnisteesta, joka vastaa sen arvoa Julkaisut-näkymän Tunniste-sarakkeessa. Koska jokaiselle julkaisupohjalle on oma yksilöivä tunnisteensa, voi kuhunkin niistä kytkeä tyylitiedostossa vain niihin päteviä sääntöjä.
Tähän käytetyn tunnisteen nimi on ’data-publication-id’. Kyseinen tunniste on käytössä html-pohjaelementillä HTML-pohjaisissa julkaisuissa eli HTML-, WebHelp-, ja PDF-julkaisuissa. Siihen ei siis voi toistaiseksi viitata esimerkiksi julkaisumuodon ollessa DITA.
Käyttötapa
Koska kyseinen tunniste on käytössä pohjaelementillä, voi viitteen siihen lisätä tällaisten julkaisukohtaisten sovituksien valitsijoiden alkuun välimerkillä muista osuuksista erotettuna. Tällainen merkintätapa tarkoittaa, että loppuosuus ilmenee missä vain kyseisellä arvolla varustetun pohjaelementin sisällä. Koska kyseinen pohjaelementti kattaa kaiken julkaisun sisällön, saa se siis ilmetä missä vain kyseistä arvoa vastaavan julkaisun sisällä.
Suosittelen erottamaan tällaiset sovitukset omaan tyylitiedostoonsa, koska niitä täytyy muokata erikseen jokaista julkaisun revisiota varten. Periaatteessa voit jopa erottaa jokaisen julkaisun tällaiset sovitukset omaan tiedostoonsa ja sisällyttää sinne vain kyseisen julkaisun eri revisioiden tarvitsemat muutokset. Jos nämä arvot pysyvät samoina halki kyseisen julkaisun eri revisioiden, voit lisätä uusien revisioiden arvot näihin valitsijoihin. Erilliset tyylitiedostot täytyy tietenkin valita mukaan käyttöön tyyleihin, joissa niitä tarvitaan.
Ei ole poissuljettua, että osana jatkokehitystä esimerkiksi lisäämme erillisen tunnisteen, joka perustuu kyseisen julkaisun ensimmäisen revision vastaavaan arvoon. Tällöin kullakin julkaisulla kunkin sellaisen revision sijaan olisi sen eriyttävä tunniste. Tämä kuitenkin vaatisi esimerkiksi käsittelytavan määrittämistä kopioiduilla julkaisuille sekä mahdollisesti erillistä saraketta, joka kertoisi kunkin revision tältä osin käyttämän arvon.
Jos kyse on vain erikseen merkittyihin sijainteihin tehtävistä muutoksista julkaisujen revisioiden välillä, näiden sijaintien merkitsemiseen kannattaa tuttuun tapaan käyttää joko elementtiluokkia tai ID-arvoja. Jos jotakin osuutta tarvitsee sijoittaa useaan kohtaan, voit myös käyttää tähän kyseisellä elementtiluokalla merkittyjä muuttujia tai sisältöviitteitä eli conrefejä.
Kuvaamani yleisen periaatteen lisäksi näille valitsijoille ei ole yleistä pohjaa tai muotoilua. Alla esittämäni esimerkit tarjoavat kuitenkin joitakin tätä muotoilua samalla havainnollistavia esimerkkejä.
Esimerkkejä julkaisukohtaisista tyylisovituksista
Tässä on joitakin ajatuksia keinoista käyttää näitä julkaisupohjien revisioiden tunnisteita niiden sisältöjen sovittamiseen. Kuvien ja tekstien osuuksien vaihtamisen eri asiayhteyksissä lisäksi voit myös tehdä tyylin, jossa täytät julkaisurevisiokohtaisesti tyylin yksityiskohdat useamman valinnan eri vaihtoehtojen välillä kautta.
Vaihtuvat kuvat
Kuvat eivät ole sovitettavissa julkaisukohtaisesti julkaisumuuttujien avulla. Täten tämä vaihtoehto on paras keino tarvittaessa säätää vaihtuvia kuvia kullekin julkaisulle.
Ainutkertaiset tuotekuvat
Rakenteinen dokumentointi toimii erityisen hyvin modulaaristen tuotteiden osalta. Se ei kuitenkaan ole ihanteellinen tällaisien palasien ainutkertaisten yhdistelmien esittämisen osalta, kun samat osat voivat toistua osana kokonaisuutta tai tulla sijoitetuiksi eri tavoin.
Tyylitiedoston kautta tällä tavoin sijoitetut kuvat ovat yksi ratkaisu tähän haasteeseen. Tällä tavoin toimituskohtaisen kasauskaavion voi näyttää tällä tavoin lisätyssä kuvassa.
Tällaisia kuvia käyttävät osuudet täytyy tietenkin merkitä yksiselitteisellä keinolla. Jos samaa kuvaa täytyy sijoittaa useampaan kohtaan julkaisua, suosittelen tähän sille tarkoitettua muuttujaa, jolle on annettu tähän käyttöön tarkoitettu elementtiluokka muuttujien tekstieditorissa.
Jos kyseinen kuva tulee kuhunkin julkaisuun esimerkiksi vain yhteen kohtaan, voi kyseiselle kohdalle käyttää sen muusta sisällöstä erottavaa elementtiluokkaa tai ID-arvoa.
Alla esittämässäni esimerkissä kuva on sijoitettu ID-arvollisen fig-elementin ensimmäisen tekstikappaleen sisään. Tämä olettaa kyseisen kuvan olevan kussakin julkaisussa vain tässä yhdessä sijainnissa. Kyseisen julkaisun revision tunnistearvo on 145. Tarkkaan ottaen pelkkä viittaus elementin ID-arvoon riittäisi ilman sen tyypin määrittämistä, mutta sen tyypin määrittäminen helpottaa tyylitiedoston lukijaa ymmärtämään, mihin tämä osuus viittaa. Suoran yksiselitteisen viittauksen ID-arvoon sijaan käytän sallivampaa valitsijaa, koska ID-arvot voivat muuttua julkaisuvaiheessa esimerkiksi monikielisissä julkaisuissa, joissa samaa sijaintia käytetään monta kertaa yhden julkaisun sisällä.
[data-publication-id="145"] .dita-fig[id^="DeliveryFullAssembly"] p:nth-of-type(1)::before {
content: url("Content/Images/Assemblies/26386720.png");
}
Muista, että voit antaa kaikille näille julkaisukohtaisille kuville tarkemmat tyylisäännöt kuten käytettyjen kuvien esityskoot yhdessä sijainnissa näiden sääntöjen erikseen kullekin toisintamisen sijaan.
Ainutkertaiset kansikuvat
Kansikuviin pätee sama periaate kuin myös muihin tällä tavoin lisättyihin kuviin. Yleensä vaihtuvia kansikuvia kannattaa hallinnoida tuoteperhekohtaisten tyylien tai tuotekohtaisten tagien avulla. Jos kuitenkin nämä kuvat ovat toimituskohtaisia, on ne parempi tehdä tällä tavoin.
Alla esittämässäni esimerkissä kyseinen kuva on lisätty kansilehden taustakuvaksi. Tämä ratkaisu ei pääasiassa toimi sellaisenaan, vaan sen tueksi tarvitaan ylimääräisiä sääntöjä. Se ei ole myöskään ainoa vaihtoehto tältä osin, vaan esimerkiksi yllä esittämäni kaltainen kuvien lisääminen toisien elementtien sisään on vaihtoehto tältä osin.
[data-publication-id="145"] .coverPageWrapper {
background: url("Content/Images/Covers/26386720.png") no-repeat;
background-size: cover;
}
Vaihtuvat tekstiosuudet
Julkaisukohtaisesti muuttuvia tekstiosuuksia hallinnoidaan normaalisti julkaisumuuttujien avulla. Sama on kuitenkin tehtävissä myös tämän toiminnon mahdollistamilla keinoilla, ja joissakin tilanteissa jälkimmäinen vaihtoehto voi toimia paremmin. Syitä tälle ovat esimerkiksi tarve pidemmille tekstiosuuksille sekä halu olla liikatäyttämättä listaa julkaisumuuttujista. Käyn alla läpi joitakin ehdotuksia tältä osin.
Paikalliset yhteystiedot
Jos yhteystiedot lisäisi julkaisumuuttujien avulla, vaatisi se luultavasti useampia muuttujia eri yksityiskohdille niiden välisten rivinvaihtojen vuoksi. Tämä täyttäisi merkittävästi listaa julkaisumuuttujista. Jos kyse on yrityksenne perusyhteystiedoista, voi niitä hallinnoida tavallisilla muuttujilla. Jos kyse on myyjäkohtaisista yhteystiedoista, joiden osalta vaihtoehtoja on enintään tusinan luokkaa, voi ne määrittää toimituskohtaisesti tavallisilla muuttujilla ja tagiehdollistuksella.
Jos kyse on kuitenkin yhteystiedoista, jotka vaihtelevat aidosti lähes jokaisen toimituksen osalta esimerkiksi siksi, että joudutte määrittelemään maailmanlaajuisesti aluekohtaiset tukihenkilöt kullekin toimitukselle, lienee tämä yllä ehdotettuja parempi vaihtoehto.
Voit jakaa kyseiset tiedot useammaksi kohdaksi tai lisätä ne yhtenä palasena varsinkin, jos eri kohtien väliin ei lisätä täsmentäviä osuuksia kuten, että kyseisellä rivillä kyse on puhelinnumerosta. Useampaan kohtaan jakaminen on monimutkaisempaa tarvittujen valitsijoiden osalta, koska jokainen pala vaatii oman valitsijansa ja sellaiselle soveltuvan yksiselitteisen tunnistamiskeinon. Voit kuitenkin esimerkiksi lisätä tunnisteen tätä varten vain kaikki eri yhteystiedot ympäröivälle osuudelle ja erottaa eri yhteystiedot toisistaan laskemalla, monesko merkityn elementin sisäinen osuus on kyseessä.
Alla esittämässäni esimerkissä kaikki tiedot on lisätty yhtenäisenä osuutena. Tämä esimerkki näyttää, kuinka saat lisättyä näihin osuuksiin pakotettuja rivinvaihtoja \A-osuuksilla. White-space-sääntö on tarpeen näiden pakotettujen rivinvaihtojen käyttöönottoon.
[data-publication-id="145"] [doxelementclass="LocalDealerDetails"]::before {
content: "Jane Doe \A Distribution representative, TX \A +1 356 2691-728 \A jane.doe@na.distr.machinex.com";
white-space: pre;
}
Julkaisumuuttujien korvikkeet
Jos tarvitsisit esimerkiksi kokonaisen taulukon täydeltä julkaisukohtaisesti muuttuvia arvoja, voit lisätä ne myös julkaisumuuttujina. Tällöin tosin joutuisit mieluiten lisäämään niille järjestelyavuiksi aakkosjärjestykseen perustuvia alkutunnisteita. Uusien muuttujien ujuttaminen sekaan on tällöin varsin vaikeaa, ja tämä lista voi käydä pitkäksi Muokkaa Julkaisua -valikossa.
Julkaisumuuttujien sijaan voit myös käyttää tähän tyylitiedoston kautta tällä tavoin hallinnoitavia osuuksia, mikäli yllä mainitut seikat muodostuisivat tapauksessanne ongelmaksi.
Tähän ratkaisuun ei liity sitä erikseen määrittäviä tekijöitä, mistä syystä en erikseen havainnollista sitä. Kyse on vain laajemmista kokonaisuuksista, joiden osat vastaavat edellistä kohtaa pääasiassa ilman tarvetta rivinvaihdoille. Varsinkin tässä tapauksessa on tosin syytä käyttää osana valitsijoita laskureita ja muita keinoja tunnistaa kohdat siten, että vain ylemmän tason elementit tarvitsevat omat ainutkertaiset tunnisteensa. Tämä koskee varsinkin tällä tavoin täytettäviä taulukoita.
Sisällön ulkopuoliset osuudet verkkojulkaisuissa
Varsinkin WebHelp-julkaisuihin on mahdollista sijoittaa näkyviin tietoa esimerkiksi kyseessä olevasta tuotteesta tai oppaan versiosta varsinaisen sisällön ulkopuolelle. Nämä sijainnit eivät normaalisti ole hallinnoitavissa julkaisukohtaisesti esimerkiksi julkaisumuuttujien avulla. Koska tämä tunniste tulee kuitenkin koko verkkojulkaisun pohjaelementin ympärille eikä ainoastaan sen sisältöosuuden ympärille, voi tällaisia sääntöjä käyttää myös näihin sisällön ulkopuolisiin osuuksiin.
Lisätietoja WebHelp-julkaisujen tyylin sovittamisesta löytyy täältä.
Alla esittämässäni esimerkissä lisään WebHelp-julkaisun yläpalkkiin julkaisukohtaisen tuotteen nimen sekä kyseisen oppaan version revisionumeron. Tähän ei voi käyttää muuttujia, joilla vastaavat arvot saisi tulemaan merkittyihin kohtiin automaattisesti, koska muuttujien arvojen hakeminen tapahtuu ennen tyylitiedoston käyttöä julkaisuvaiheessa. Kaikki muut säännöt kuin kyseinen arvo on tässä tapauksessa kopioitu yllä linkittämästäni aiemmasta artikkelista. Lisäksi lisäsin ensimmäiseen valitsijaan tähän käytetyn uuden tunnisteen.
[data-publication-id="145"] .documentHeaderLogoWrapper::before {
content: "Let's Get Kraken ERP Manual v2.41";
padding-left: 80%;
white-space: nowrap;
color: white;
font-size: 1.5em;
}
.documentHeaderLogoWrapper {
display: flex;
flex-grow: 1;
align-self: flex-end;
}
.documentHeaderTitle {
display: none !important;
}
Erikoistyylit
Sisältöjen muokkaamisen lisäksi tätä toiminnallisuutta voi käyttää myös pelkkien tyylivalintojen sovittamiseen julkaisukohtaisesti. Tällaiselle toiminnallisuudelle lienee vähemmän tarvetta, mutta käyn alla läpi muutamia tilanteita, joissa tällainen toteutus voi osoittautua hyödylliseksi. Jos esimerkiksi kukin julkaisu sisältää joukon valintoja ennalta annetuista vaihtoehdoista, voi nämä valinnat tehdä tällä tavoin. Lisäksi tämän tunnisteen puuttumista Editori-valikon kautta tehdyissä esikatseluissa voi käyttää kyseisten esikatselunäkymien rikastuttamiseen niiden käyttötapaa paremmin palveleviksi.
Monivalintatyylit
Kuvitellaan, että tuotteenne opas olisi erilainen tyylivalinnoiltaan jokaisen toimituksen osalta. Kenties jopa käytätte samaa pohjatyyliä kaikille toimituksille, mutta kirjoitatte oppaita täysin toisiinsa liittymättömille eri asiakkaiden tuotteille, joista jokainen vaatii omat sovituksensa. Varsinkin kyseessä ollessa yksittäisprojektien teillä olisi tuskin syytä tuottaa erillistä tyyliä kullekin tällaiselle asiakkuudelle.
Esimerkiksi kuvatunlaisessa tilanteessa yksi vaihtoehto olisi lisätä tyylitiedostoonne valmiita vaihtoehtoisia sääntöjä, joihin voitte lisätä eri julkaisuja vastaavia valitsijoita. Tällöin kunkin julkaisun tyylin määrittäminen olisi käytännössä monivalintalista. Esimerkkejä tällaisista valinnoista olisivat vaikkapa listojen tyylit, korostuskeinot ja värimaailma.
Alla esittämässäni esimerkissä näytän kaksi vaihtoehtoista tapaa määrittää tason yksi numeroimattomien listojen käyttämät merkit ja niille lisätyt julkaisukohtaiset valitsijat. Periaatteessa tällaisissa tilanteissa olisi ihanteellista voida käyttää :is()-valitsija-apua pelkästään uusien julkaisukohtaisien tunnisteiden lisäämiseksi sen sisään. Kyky käyttää tätä toimintoa ei kuitenkaan ole itsestäänselvyys kasaajien osalta. Tästä syystä suosittelen mieluummin kopioimaan myös muut toistuvat osuudet ja vaihtamaan julkaisun tunnistearvoa. Erota eri julkaisujen valitsijat toisistaan pilkulla ja aseta ne mieluiten eri riveille alla esitetyllä tavoin.
[data-publication-id="145"] ul:not(.toccontent),
[data-publication-id="143"] ul:not(.toccontent) {
list-style-type: disc;
}
[data-publication-id="144"] ul:not(.toccontent),
[data-publication-id="142"] ul:not(.toccontent) {
list-style-type: circle;
}
Otsikkosisältöjen esikatselu
Joskus tilannekohtaisten tunnisteiden lisäämisen odottamattomia etuja on, kuinka niihin voidaan suhteuttaa myös tilanteet, missä ne eivät ole käytössä.
Julkaisupohjien revisioiden tunnisteet lisätään vain julkaisupohjien perusteella kasattuihin julkaisuihin. Niitä ei siis anneta Editori-valikon kautta tehtäville julkaisuille tai niiden esikatseluille. Tästä syystä pystyt kohdentamaan säännöt tämän tunnisteen poissaolon kautta erikseen vain näihin Editorin kautta tehtyihin julkaisuihin tai jopa ainoastaan esikatselunäkymiin niille.
Tällä tavoin voit esimerkiksi tarkistaa, montako otsikkosisältöä sinulla on valittuna. Kyseessä tältä osin on jokseenkin epäsuora keino tarvittaessa saada tietoa, jota järjestelmä ei toistaiseksi kerro muilla tavoin. Tarvittaessa tietenkin lisäisimme vastaavan laskurin näkymien hallinnan avuksi. Sitä odotellessa tällainen ratkaisu olisi jälleen yksi keino soveltaa tyylitiedostoja järjestelmän toiminnallisuuden laajentamiseksi vastaavalla tavoin kuin muut keinot, joita esittelin täällä.
Alla esittämässäni esimerkissä ainoastaan Editori-valikon julkaisujen esikatseluihin lisätään alkuun luku, joka kertoo niihin valittuina olevien otsikoiden määrän, kun näitä otsikoita on kaksi tai enemmän. Käytän osana valitsijoita myös tunnistetta data-document-type=”dox-preview”, koska muutoin tämä sääntö vaikuttaisi myös varsinaisiin tätä kautta otettuihin julkaisuihin. Lisäksi näytetty laskuri on sijoitettu julkaisun loppuun ja sitten siirretty sen alkuun, koska tällä tavoin se näkee kaikki julkaisun sisältämät otsikot. Jos se sijoitettaisiin suoraan julkaisun alkuun, olisi sen arvo aina nolla.
html[data-document-type="dox-preview"]:not([data-publication-id]) body:has(.topicWrapper + .topicWrapper)::after {
content: "Topics:" counter(topics);
position: absolute;
top: 0;
right: 0;
}
html {
counter-reset: topics;
}
.topicWrapper {
counter-increment: topics;
}
Yhteenveto
DoX CMS:n versio 8.7 toi mukanaan lisätunnisteen data-publication-id, jonka avulla voit lisätä tyylitiedostoihin erikseen kuhunkin julkaisupohjan revisioon suunnattuja sääntöjä. Lisäämällä tyylitiedostoihin tämän tunnisteen arvoon kytkettyjä sääntöjä voit ottaa kyseiset säännöt käyttöön ainoastaan kyseisiin julkaisupohjien revisioihin perustuvissa julkaisuissa. Nämä arvot täytyy yksinkertaisesti lisätä tähän käytettyjen valitsijoiden alkuun erotettuna loppuosasta välilyönnillä. Loppuosa on parasta kytkeä yksiselitteisiin tunnisteisiin kuten elementtiluokkiin tai ID-arvoihin, jos erot halutaan rajata esimerkiksi vaihtuvat sisällöt vain tiettyihin sijainteihin.
Mahdolliset tavat käyttää tätä tunnistetta kattavat esimerkiksi julkaisukohtaisesti lisätyt kuvat tai tekstit. Tällaiset lisäykset vaatisivat muussa tapauksessa vähintäänkin jokaiselle poikkeavalla julkaisulle oman taginsa, jolla eri vaihtoehdot tulisi merkitä kyseisissä sijainneissa. Tekstin tapauksessa sama olisi tehtävissä myös julkaisumuuttujilla, mutta niiden määrä voisi tällöin helposti kasvaa mahdottomaksi hallinnoida.
Lisäksi tällä tavoin voi tehdä myös muutoksia varsinaisiin tyyleihin. Esimerkiksi tyylitiedostoista voi tehdä monivalintaversiot, joissa jokaisen uuden julkaisurevision kohdalla niihin lisätään valinnat siltä osin, mitkä vaihtoehdot ovat kyseisen julkaisun käytössä. Näin jokaiselle poikkeavalla vaihtoehdolle ei tarvitse lisätä omaa tyyliään.
Myös tämän tunnisteen puuttuminen auttaa osaltaan rajaamaan, missä säännöt tulevat käyttöön. Tämä arvo on käytössä ainoastaan julkaisujen revisioista kasatuille julkaisuille. Editori-valikon kautta julkaistavat joukot otsikkosisältöjä eivät omaa tätä arvoa, mistä syystä voit esimerkiksi lisätä tällaisten julkaisujen esikatseluun laskurin, joka kertoo, montako otsikkosisältöä on valittuna kyseisellä hetkellä.