Extended site info

Vaak worden er in een website een paar extra velden of een nieuw formulier toegevoegd aan /admin/config/system/. Om een uitgangspunt en een snelle start te hebben bij een nieuwe website heb ik hiervoor een standaard module op github geplaatst.

https://github.com/FlorisVedder/extended-site-info

De module voegt een contact fieldset en een about fieldset toe aan de pagina Websitegegevens. De informatie is via blokken beschikbaar en in regio's te plaatsen. Om spambots te beperken zijn de email en telefoon nummers omgezet naar ascii tekens*.

Instellingen en Blokken


Download en enable de module via de bovenstaande link. Je kunt de extra velden nu vinden op de Websitegegevens pagina: /admin/config/system/site-information. Of ga er heen via instellingen > websitegegevens.
Hier zie je twee nieuwe veldgroepen:
  • About the site objective of the site
  • Contact information

Bijde velden bieden je de mogelijkheid om de titel voor het block aan te passen en de betreffende informatie in te voeren. De blokken kun je terugvinden via structuur > Blokken.
De namen van de drie blokken:

  • A description of the objective of the site
  • The contact info related to the site
  • Small version of contact info, for example in footer

Het laatste blok is gelijk aan het contact blok maar dan zonder titel zodat je een kleine versie van het blok als kopie beschikbaar hebt voor bijvoorbeeld header of footer. Het gewone contact blok kun je dan bijvoorbeeld in de sidebar gebruiken.

Uitbreiden met extra velden


Als er meer velden nodig zijn kan de module natuurlijk als voorbeeld of als template worden gezien om bijvoorbeeld address en woonplaats velden toe te voegen.
Kopieer hiertoe een van de velden uit de .module file en pas deze aan.
Bijvoorbeeld:
  $form['contact']['site_contact_address'] = array(
    '#type' => 'textfield',
    '#title' => t('Address'),
    '#default_value' => variable_get('site_contact_address', ''),
  );

Ander voorbeeld:
  $form['contact']['site_contact_city'] = array(
    '#type' => 'textfield',
    '#title' => t('City'),
    '#description' => t('the city where the organisation is located'),
    '#default_value' => variable_get('site_contact_city', ''),
  );

Voor andere veld typen of attributen bekijk het Drupal Form API overzicht.

Extra velden laten zien in de blokken


Vergeet niet de extra te renderen in de blokken.
Ophalen van de veld waarde en in een variable plaatsen:
$city = variable_get('site_contact_city');
Controleren of de variable bestaat en gevuld is en aan de array toevoegen:
!empty($city) ? $contact_info['city'] = $city : '';
De $contact_info array wordt als een lijst gerenderd via de theme functie item_list.

Omzetting naar ASCII van telefoon en email adress

Het telefoon nummer en email adress worden als link opgeslagen in twee verborgen velden. Bij het opslaan worden ze omgezet naar ascii tekens. Zo hebben we altijd een gecodeerd link van email en telefoon beschikbaar om op de site te tonen en een ongecodeerde platte versie om in de backend te laten zien voor het geval we een aanpassing willen doen.

De ascii encoding in deze module is gebaseerd op de invisimail module. Wanneer er email adressen op andere plaatsen in de website (content) wordt ingevoerd is het de moeite waard om eens naar deze module te kijken.

Let op: Als je pagina via 'inspecteren' raadpleegt wordt ascii in de browser gewoon getoond als letters. Via 'bekijk bron' kun je de ascii encoding wel zien en controleren / debuggen.