Navigatie overslaan.
Start

Wijzigen van de volgorde van links

Zoals in de inleiding is geschreven kan de opmaak van links op een pagina worden aangepast aan de eigen wensen. Op deze pagina van de website (geschreven december 2007) staat onder de tekst het volgende: icoon1 | icoon2 | login om te reageren
of:
icoon1 | icoon2 |  Nieuwe reactie toevoegen
waarbij icoon1 resp. icoon2 een icoontje is om een printvriendelijke versie van deze pagina te maken resp. een e-mail naar een vriend te zenden

Omdat de extra modules „forward” en „print” op deze site staan komt hier normaal gesproken een tekst te staan als: „E-mail deze pagina” resp. „Printvriendelijke versie”.

Wij hebben de volgende wensen voor het aanpassen van deze regel:

  • iconen in plaats van de tekst
  • een andere volgorde van de tekst resp. iconen.

Dit kan door het zelf schrijven van de functie „theme_links()”. Hieronder staat ons resultaat. De functie bestaat uit drie delen:

  1. Het aanpassen van de volgorde van de links.
  2. De aanroep van de Drupal-functie „theme_links” om de standaard opmaak te realiseren.
  3. Het wijzigen van een deel van de resulterende tekst in iconen.

Opmerking:

  • de functie theme_links() wordt o.a. ook gebruikt voor primary_links en secundary_links. Test dus uw eigen wijzigingen goed en kijk of er geen andere dan de gewenste wijzigingen optreden!
  • de php-functie „stripos” bestaat alleen in PHP versie 5. Voor versie 4 moet gebruik worden gemaakt van „strpos”, maar deze is hoofdlettergevoelig. De teksten in array $finds moeten dan (m.b.t. de hoofd-/kleine letters) exact overeenkomen met de (vertaalde) tekst uit de module. Wellicht moeten er één of meer extra regels worden toegevoegd in verband met diverse schrijfwijzen
  • de „print” module kan om meerdere redenen een printpagina verwijzing maken
  • er wordt geen garantie gegeven dat de onderstaande code bij u werkt.
// wijzig de volgorde van de links en gebruik icoontje
function garland_links($links, $attributes = array('class' => 'links')) {
$output = '';
// definitie welke links vooraan moeten staan en in welke volgorde
static $vooraan;
if (!$vooraan) {
$vooraan = array(
'book_printer',
'print',
'forward_links',
);
}
// definitie van vervanging van tekst door iconen
$finds = array(
">printervriendelijke versie<" => "><img src=\"/files/printer.gif\" border=\"0\" /><",
">e-mail deze pagina<" => "><img src=\"/files/email.gif\" border=\"0\" /><",
);
$eerst = array();
$rest = array();

if (count($links) > 0) {

// bepaal welke van de links vooraan komen te staan
foreach($vooraan as $naam) {
if ($links[$naam]) {
$eerst[$naam] = $links[$naam];
}
}

// bepaal wat de overige links zijn
foreach ($links as $key => $link) {
$i = FALSE;
foreach($vooraan as $naam) {
if ($naam == $key) {
$i = TRUE;
}
}
if ($i == FALSE) {
$rest[$key] = $links[$key];
}
}

// zet alle links achter elkaar
foreach ($rest as $key => $link) {
$eerst[$key] = $links[$key];
}

// gebruik het Drupal thema voor de opmaak
$output = theme_links($eerst, $attributes);
// zoek en vervang de teksten door iconen
foreach($finds as $find => $icon) {
$i = 1;
while ($i) {
if (($i = stripos($output, $find)) > 0) {
$output = substr($output, 0, $i) . $icon .substr($output, $i + strlen($find));
}
}
}
}
return $output;
}