Veldinhoud beheren

Leseenheid

Moeilijkheidsgraad

5

In deze les gaan we technieken leren om inhoud in een veld op automatische wijze toe te kennen. Feeds en Editable views kunnen ook inhoud input aan, maar deze modules hebben we reeds gezien.

Onderstaande print heeft zowat alles in huis om een overzicht te krijgen van de mogelijkheden. Het gaat over een inschrijving voor een BBQ...

1) Automatische node titel

Via Auto Node Title wordt de titel automatisch gegenereerd op basis van drie andere velden: Naam, aantal volwassenen en aantal kinderen. De titel wordt zelfs als veld verborgen voor de input. In het webshop gedeelte zullen we daar later ook gebruik van maken om producten automatisch bvb de kleur en maat mee te geven. vb Tshirt (blauw, XL)

met als resultaat...

2) Serial field

Het inschrijvingsnummer wordt automatisch gemaakt door een autonummeringsveldje.

Dit gebeurt door de module Serial Field. Ideaal om bvb factuurnummers te genereren.

3) Views Bulk operations (VBO)

Met deze module kan je in een view een selectieblokje creëren voor elke node in de tabel. Daarmee selcteer je de nodes die je wilt bewerken. Dit gaat van verwijderen, depubliceren,.. tot en met de inhoud wijzigen. Wij focussen ons op dit laatste.

Om dit te bekomen voeg je eerst het veld in:

Daarna verfijn je.

Een waarde instellen voor de geselecteerde nodes kan als volgt: (je kunt ook alle nodes selecteren)

 

Je kunt ook via search and replace in een tekstveld woorden vervangen

het resultaat...

4) Standaard waarden

Eén van de meest gekende manieren om inhoud aan een veld toe te kennen is een standaardwaarde instellen. Er zijn 2 modules die een uitbreiding zijn van deze standaard werkwijze. Default token zorgt er voor dat je dynamisch kunt werken door de inhoud vna andere velden te bebruiken via tokens. Field Defaults wordt gebruikt om de standaardwaarde te wijzigen en in te stellen. Tot daar geen probleem, maar wat doe je met nodes die reeds bestaan. Standaardwaarden worden maar ingevuld bij het aanmaken van nieuwe inhoud. Met deze module kan je met terugwerkende kracht op bestaande nodes de velden een standaadwaarde geven. Merk bij onderstaande print de mogelijkheden op.

5) Computed fields (berekende velden)

Deze module is tot heel wat in staat.

We berekenen eerst het toaal aantal personen die per inschrijving komt.. 2 + 4 = 6..

De instellingen van dit veld vergen een woordje uitleg...De display code toont dat $entity_field_item['value'] de variabele is waar we mee moeten werken. Het voorbeeld spreekt boekdelen. Kijk hoe je naar een veldwaarde verwijst. Je voegt zelf zoveel variabelen toa als je wilt. Tel ze op en ken ze toe aan de $entity_field_item['value'] Klaar. Vergeet nooit een $ teken te plaatsen voor een variabele. PHP werkt zo...

Computed field tools is een module die met terugwerkende kracht alle nodes waar het veld in voorkomt herberekent. Bij structuur is er een optie bijgekomen.

Als tweede oefening berekenen we het totaal bedrag. Je ziet dat we de kinderen aan de helft van de prijs rekenen.

Als derde oefening van berekende velden gaan we zelf HTML schrijven, afhankelijk van een waarde  in een ander veld. Als er korting is van 20 € (veld korting bevat dan 20), dan gaan we een leuke kortingsfiguur tonen, anders tonen we niets...Eerst halen we het veld op. Dan controleren we met de PHP if functie of het 20 is. Bekijk aandachtig de syntax om te vergelijken. Vergeet geen 2X een gelijkheidsteken te zetten. De strings worden in PHP door een punt aan elkaar gekoppeld. Onze figuur heeft als naam korting20.jpg zaols je kunt zien. Deze methode kan dus gebruikt worden om getallen en waarden om te zetten naar figuren. In views konden we ook dit al met herschrijven...

Als vierde oefening gaan we de eigen node overstijgen en zien we dat we met Computed Fields ook de Drupal database kunnen aanspreken.. Hou je vast aan de takken van de bomen.. We gaan het toaal aantal ingeschreven personen berekenen. Daarvoor gaan we eerst via het control panel in de database om de namen te bekijken van de tabellen en velden die we nodig hebben. Met 'foreach' doorlopen we alle records van deze tabellen en tellen zo het aantal volwassenen en daarna het aantal kinderen op. We vullen telkens onze uiteindelijke Computed Field variabelen met deze waarden. Als je ooit veel inschrijvingen hebt moet je de 0, 10 optrekken natuurlijk. Dit is het begin en aantal records die je wilt tellen.

Uit een andere oefening heb ik dit gehaald. Het maakt gebruik van de PHP switch functie. Bekijk maar eens hoe logisch die is opgebouwd..

6) PHP veld

Een teskveld (body) kan je met de CKeditor omzetten naar een PHP veld als deze module (van de kern) werd aangevinkt. PHP kan verbinding maken met de database van Drupal en zelfs met andere databases. Wij houden het bij deze eerste en gaan opverkenning via het Control Panel van de hosting. We verkennen in de dabase een table met naam 'node'. We zien de node titels staan in het veld 'title' en het inhoudstype heeft blijkbaar de naam 'type'.

We willen nu een veld met de naam 'alle inschijvingen' toevoegen aan ons inschrijvings resultaat. Ik weet wel je kunt dit ook met een view, maar dit is plezanter..

Hoe ga je te werk... Eerst vul je de connectiewaarden in. Natuurlijk moet je de paswoorden kennen van je database. Daarna ga je naar een tabel en je haalt er de records uit. Hier filteren we op het type= inschrijvingen. anders hebben we alle titels uit onze Drupal. Met een tellertje houden we nog het aantal bij.. 'echo' is de PHP syntax om iets op het scherm te laten verschijnen.

Als je nu iemand laat isnchrijven, dan ziet die gans deze php code. Zeker niet ideaal... met de paswoorden.. Field extra widgets laat je toe om een veld verborgen te zetten. Let wel het is dan ook voor jou verborgen. Je kunt het echter terug normaal zetten om aan te werken..Als het niet openstaat voor de anonieme gebruikers kan je gerust PHP gebruiken. De bezoeker ziet enkel het resulaat. Ook niet met een inspector.. PHP wordt op de server uitgevoerd.

 

7) Rules

Alhoewel dit nog als een afzonderlijk les wordt behandeld, geef ik toch al een kleine voorzet.. Als je meer dan drie kinderen hebt krijg je 20 € korting..

We maken een nieuwe regel aan. We gaan eerst de gebeurtenissen bepalen waarvoor de rule geldt. Als we nieuwe inschrijvingen hebben of bestaande wijzigen willen we dat er gerekend wordt.

Daarna gaan we de voorwaarde instellen. We kiezen voor data vergelijking.

met deze instellingen. Je kiest het veld, de operator en daarna de waarde.

Nu gaan we bepalen welke acties er worden ondernomen. We kiezen om een waarde in te stellen en een berichtje op het scherm te laten verschijnen van de korting. Je kutn er evengoed een mail mee versturen naar de persoon (als er een mail veld zou zijn).

De waarde wordt zo ingesteld

En het berichtje:

Het veld wordt ingevuld en ja hoor..