CCK

Brendan Johan Lee
Department of Informatics
University of Oslo, Norway
brendajl@simula.no

3. mars 2011

Løst basert på Drupal Notes av Gisle Hannemyr

Sammendrag

Dette er en tutorialbasert introduksjon til CCK-modulen i Drupal 6. Tutorialen er skrevet for bruk i INF5270 kurset på IFI, og tar derfor utgangspunkt i at Drupal er konfigurert tilsvarende som utgangspunktet studentene utdeles. Dokumentet er løst basert på engelsk materiale fra Gisle Hannemyr. Hannemyrs Drupal Notes anbefales i stedet for dette dokumentet for de som ikke følger INF5270.

En kort introduksjon om hva Content Construction Kit er, hva den gjør, og hvordan den aktiveres er allerede presentert i en egen slideshow. I tillegg til selve CCK-modulen, skal du også aktivere alle CCK-typene som er listet under selve CCK-modulen.

I denne tutorialen kommer vi, i tillegg til CCK, til å benytte oss av to eksterne moduler: Voting API og Fivestar. Vi har ferdiginstallert disse modulene for dere på sandkassenettstedet deres, men dere må selv sørge for å aktivere (og eventuelt konfigurere - men det behøves ikke for å gjennomføre denne tutorialen) dem.

1 Skape en ny innholdstype

Det første vi skal gjøre er å skape en ny innholdstype. Det er blitt nevnt hvordan dette gjøres i en tidligere forelesning, men vi kommer nå med en mer grundig trinn-for-trinn beskrivelse. Det er greit å merke seg at det vi nå gjør ikke er en del av CCK, men å bruke CCK er meningsløst uten innholdstyper å knytte feltene man lager til. Vi skal i løpet av dette dokumentet skape en innholdstype som representerer mobiltelefoner.

Opprett først en ny innholdstype ved å navigere til Administrer…Innholdsbehandling…Innholdstyper…Legg til ny innholdstype. Det første du nå må gjøre er å fylle inn et navn og en type under Identifisering. Navnet skal være et menneskelesbart navn som beskriver innholdstypen, f. eks. Mobiltelefon. Type er en streng som vil bli brukt i URL-er, og skal være maskinlesbar. I dette tilfelle betyr det at type kan kun bestå av små bokstaver, tall og _-tegnet. I eksempelet vil vi ganske enkelt bruke mobil. I tillegg til dette bør du fylle inn Beskrivelse-feltet. Innholdet av dette feltet vil vises i listen over innholdstyper, og når en bruker klikker opprett innhold for deretter å bli bedt om å velge innholdstype.

PIC

Nå blar du deg videre ned til Innstillinger for innsendingsskjema og klikker på denne slik at den utvider seg. Vi skal nå endre navnet på etikettene til hovedinnholdstypene, henholdsvis overskrift og brødtekst. Siden vi prater om mobiltelefoner blir det ganske unaturlig å bruke standardnavnet tittel. En mobiltelefon har ikke en tittel, den har en Modell. Endre derfor Etikett for overskriftfeltet til Modell. Vi endrer også Etikett for brødtekstfelt til beskrivelse. Om man lar Etikett for brødtekstfelt være tom, vil Drupal ganske enkelt ikke vise noen etikett for dette feltet.

Her har man også mulighet for å sette minimum antall ord som en mobiltelefonbeskrivelse må bestå av, samt gi brukerne instrukser for hvordan innholdstypen Mobiltelefon skal brukes.

PIC

Når du er ferdig klikker du på Lagre innholdstypen.

2 Legge til nye felttyper

Vi skal nå begynne å bruke CCK til å legge til nye felttyper til vår nyopprettede innholdstype. Start ved å navigere til Administrer…Innholdsbehandling…Innholdstyper og klikk på manage fields ved siden av din nye innholdstype. Legg merke til at vi nå begynner å se en del engelske navn. Årsaken er ganske enkelt at CCK-modulen ikke er blitt fullstendig oversatt enda. Har du litt ekstra tid til overs er det fullt mulig å bidra med en oversettelse eller to.

Nederst på siden under overskriften Add fyller du ut Label og Field name. Label skal være et menneskelesbart navn på feltet du skal legge til. Dette feltet kan endres senere om man ønsker. I dette eksempelet fyller vi inn teksten Produsent.

Field name skal være et maskinlesbart navn, i dette tilfelle bestå av små bokstaver, taller og _-tegnet, og vil representere feltnavnet i selve databasen. I dette eksempelet fyller vi inn teksten produsent. Navnet må være unikt, og kan ikke endres senere.

Det tredje feltet representerer felt-typen og er merket Type of data to store. Valgene i nedtrekksmenyen vil variere avhengig av hvilke CCK-datatyper man har installert og aktivert. Det er ikke mulig å endre felt-type etter at man har opprettet selve feltet. Velger man feil felt-type må man slette det nye feltet og starte på ny. Siden vi skal lage en liste over kjente produsenter som brukerne kan velge fra en nedtrekksmeny, velger vi datatypen Integer. Vi har nemlig fulgt med i databasetimen, og vet at man ønsker at hver enkelt produsent skal identifiseres med en unik ID slik at man ikke får dobbeltlagring i databasen.

Det siste feltet, Form element to edit the data, brukes for å velge hva slags mekanisme vi ønsker at brukeren skal benytte seg av for å fylle ut informasjonen. Valgene her vil variere avhengig av hvilke felt-type vi valgte i det tredje feltet. De fleste av disse mekanismene bør være kjent for de fleste, og vi kommer derfor ikke til å beskrive dem her. Bruke gjerne noen minutter på å utforske de ulike mulighetene. I dette eksempelet skal vi velge Select list, som vil gi brukeren en nedtrekksmeny å velge fra.

PIC

Etter at du har lagret det nye feltet, må feltet konfigureres. For noen felt-typer, de som har påkrevde konfigurasjoner, vil du automatisk videreføres til konfigurasjonsbildet. Om konfigurasjonsbildet ikke automatisk vises klikker du på configure-lenken ved siden av den nyopprettede felt-typen på Manage fields-siden.

Øverst får du muligheten til å fylle ut en hjelpetekst som skal informere brukere om hvordan du har tenkt at felt-typen skal brukes. Du har også mulighet til å definere en standardverdi for feltet. Denne standardverdien kan enten være en statisk verdi, eller man kan benytte PHP-kode for å generere dynamiske standardverdier. La standardverdien være slik den er for øyeblikket.

PIC

Videre har du mulighet for å spesifisere globale innstillinger for felt-typen. Dette er altså innstillinger som gjelder alle steder hvor felt-typen benyttes, uavhengig av hvilken innholdstype den er knyttet til. Felt-typer er nemlig ikke knyttet til en spesifikk innholdstype. Når man først har opprettet en felt-type kan man gjenbruke den i så mange ulike innholdstyper man måtte ønske.

De mulige globale innstillingene for denne typen er:

Sørg for at Obligatorisk er valgt og Number of values er 1. La resten av feltene være blanke.

PIC

Til slutt kan man fylle ut verdiene som skal kunne brukes for dette feltet. Også her kan man bruke PHP-kode, en mulighet som gir en enorm fleksibilitet. I vårt tilfelle skal vi holde oss til statiske forhåndsdefinerte verdipar bestående av nøkkel og verdi. Man fyller ut en verdi på hver linje. Nøkkel og verdi skille med ǀ-tegnet. Dersom man ønsker kan man droppe å bruke nøkler og heller bare benytte seg av verdier.

PIC

Vi skal nå legge til en ekstra felt-type som skal brukes til mobiltelefonens pris. Denne gangen skal du gjøre feltet frivillig å bruke, datatypen skal være av type Integer og brukeren selv skal få lov å skrive inn verdien (hvordan dette ordnes får du i oppgave å finne ut av selv). Til slutt skal du gi feltet “NOK” som suffix.

Før du forlater felt-type-skjermbildet helt bør du omorganisere rekkefølgen feltene presenteres til bruker på en fornuftig måte. Dette gjøres enkelt ved hjelp av “drag and drop”. Ved å klikke på pilene til venstre i listen og holde musetasten inne kan man enkelt flytte feltene opp og ned. Merk at endringene i rekkefølgen ikke blir lagret før man trykker på Lagre-knappen.

PIC

Ikke glem å sørge for riktig rettighetsinnstillinger for hvem som skal ha lov å opprette, redigere og slette innhold av type Mobil. Dette gjøres under Administrer…Brukeradministrering…Tillatelser.

CCK-modulen Content Permissions gjør at det er mulig å gjøre innstillinger på hvem som har tilgang til å se og redigere innhold helt ned på individuelt felt-nivå. Men når denne modulen er aktivert er standardinnstillingen at ingen brukere (annet enn den magiske administratorbrukeren) skal ha tilgang til å se og redigere nye felter. Om du aktiverte denne modulen, er du nå altså nødt for å gå inn og sørge for at de rette brukerne skal ha rettigheter til de nye felt-typene dine.

Også dette gjøres under Administrer…Brukeradministrering…Tillatelser.

PIC

3 Grupper

CCK har mulighet for å gruppere felter i egne grupper, som da vil vises under et eget panel med en egen overskrift. For å illustrere dette skal vi nå legge til muligheten for å lenke til en forhandler i mobilinnholdstypen vår.

Først legger vi til en ny gruppe. Dette gjøres like under der hvor man legger til felt-typer slik som beskrevet over. De to feltene som må fylles ut, Label og Group name, tilsvarer Label og Field name da vi la til nye felter.

PIC

Etter at gruppen er lagret, skal vi konfigurere den. Dette gjøres ved å klikke på Konfigurer-lenken ved siden av navnet på den nyopprettede gruppen i listen over felter. I tillegg til hjelpetekst som vises til brukerne samt beskrivelse som vises i listen over felt og grupper, som begge nå burde være kjent for deg, har man et valg som heter Style. Dette valget bestemmer hvordan gruppen presenteres i skjemaet man fyller ut når man oppretter innhold.

Hva du velger her velger du selv.

PIC

I tillegg må du opprette to ny felt-typer som skal ligge under forhandler-gruppen. Den ene skal være et enkelt tekstfelt som skal inneholde forhandlernavnet. Den andre skal være til forhandler-URL. Denne bør begrenses til 60 tegn, og man bør velge Filtered text som type slik at teksten automatisk gjøres om til en hyperlenke. Du får i oppgave å gjøre dette selv uten hjelp av skjermskudd.

Avansert oppgave: Løsningen med å bruke Filtered text for å få hyperlenker er ganske svak, kan enkelt medføre brukerfeil, og også misbrukes. Som avansert oppgave oppfordres du i stedet til å finne og installere en egen CCK-innholdstype for URL-er

.

Vi skal igjen flytte på felt-typene, slik som beskrevet over. For å legge til en felt-type til en gruppe drar man felt-typen like under gruppen, og deretter drar den litt mot høyre slik at den legger seg som et felt under selve gruppen før man slipper.

PIC

Husk å endre brukerrettighetene på samme måte som beskrevet over.

4 Endre innholdsvisning

Til nå har vi konsentrert oss om hvordan man lager innholdstyper. Det er ikke blitt nevnt noe om hvordan man bestemmer hvordan innholdstyper vises. Endringene som i utgangspunktet kan gjøres er ganske begrensede. Tilbake i listen over felt-typer til Mobiltelefon-innholdstypen klikker man på Display fields. Før man går videre er det greit å vite at ordet Teaser brukes om en node som vises i en liste, for eksempel standardforsiden på Drupal-nettstedet. Man har i utgangspunktet tre valg i denne listen:

Det finnes en rekke moduler som gjør at man, på svært mange forskjellige måter som f. eks. vha. templates, kan tilpasse visning av innhold med langt bedre kontroll en det man får gjort slik som beskrevet over. I neste tutorial skal vi ta for oss en av disse, Views, en modul som ikke bare lar en tilpasse visning av innhold, men som er en svært kraftig modul som lar en gjøre utrolig mye man ellers ikke får gjort i Drupal.

PIC

5 Legge til terningkast

Vi skal veldig raskt vise hvordan man kan legge til terningkast i innholdstyper ved hjelp av modulene Fivestar og Voting API. Sørg for at begge disse modulene er aktivert (slik som tidligere beskrevet).

Fivestar kan brukes på to vidt forskjellige måter:

Fivestar og Voting API er ganske kraftige moduler som er svært fleksible og har mange muligheter og innstillinger. Vi kommer ikke til å gå i detalj om disse modulene her. Det skal dere få lov å forske på på egenhånd. Derimot må vi nevnte at globale innstillinger for modulene gjøres under henholdsvis Administrer…Innstillinger…Fivestar og Administrer…Innstillinger…Voting API. Sørg for å ta en kikk på disse innstillingene, da man her har en rekke muligheter.

For å legge til et terningkastsystem av type Node mode til vår nye innholdstype må man tilbake til listen over innholdstyper. Klikk på Endre-lenken ved siden av Mobiltelefoninnholdstypen vi opprettet. Bla ned på siden og utvid Fivestar rating-panelet. Her finner man en rekke valg. Jeg lar det derfor være opp til dere å utforske mulighetene.

PIC

For å legge til et terningkastfelt av typen Review mode må man tilbake til listen over felt-typer i vår nye innholdstype. Man legger ganske enkelt til et nytt felt av type Fivestar Rating. De enkle innstillingene her er også selvforklarende, og dere får i oppgave å utforske disse selv. Vi nevner dog her at det er mulig ved bruk av kategorier, eller Voting Axis som det kalles i Drupal, å ha mange ulike terningkast tilknyttet en innholdstype. Man kan også lage svært avanserte terningkastsystem hvor for eksempel stemmer avgitt på en node, kan påvirke stemmene i en annen node. Disse tingene er langt utover temaet i dette dokumentet og jeg henviser dere derfor til Fivestarhåndboken.

Klarer du å endre Mobiltelefon-innholdstypen vi har lagd slik at skribentene våre kan gi 4 ulike terningkast for hver mobiltelefon: byggkvalitet, utseende, pris og brukervennlighet?

Avansert oppgave: Utvid innholdstypen vår slik at de 4 terningkastene du la til i forrige oppgave resulterer i et 5. terningkast som er et gjennomsnitt av de første 4. Systemet skal automatisk kalkulere det 5. terningkastet

PIC