Posts tonen met het label Snippets. Alle posts tonen
Posts tonen met het label Snippets. Alle posts tonen

zaterdag 1 november 2014

Drupal: Geheugenlimiet instellen

Het is bekend dat Drupal veel resources gebruikt. Daardoor kan het voorkomen dat je een foutmelding krijgt dat het Drupal-systeem te weinig geheugen ter beschikking heeft om alles vlot te kunnen verwerken.

Standaard staat de geheugenlimiet ingesteld op 128MB.

Gelukkig is er een manier om het beschikbare geheugen manueel aan te passen.

Open het tekstbestand .htaccess (dit bestand staat in de root-folder van je Drupal installatie).

Voeg volgende regels toe aan dit bestand:

# memorylimit
php_value memory_limit 160M

In bovenstaand voorbeeld wordt het beschikbare geheugen aangepast naar 160MB. Uiteraard kun je hier ook een ander getal plaatsen.

LET OP! Mogelijk kan je hosting-provider je op de vingers tikken wanneer je teveel geheugen reserveerd voor je Drupal-systeem. Wanneer je site in productie gaat, test deze dan opnieuw met de standaard-geheugenlimiet.

Sla het bestand op en leeg de cache van je Drupal-systeem.
(Beheer > Ontwikkeling > Prestaties)

In de Statusrapportage kun je nu je beschikbare geheugen kontroleren.
(Beheer > Rapportages)




zaterdag 19 oktober 2013

Drupal7: Nieuwste jQuery-bibliotheek toevoegen aan je site.

De jQuery-versie in de Drupal-core is meestal niet de nieuwste versie.
Op zich is dit zeker geen probleem, maar soms kan het handig zijn, vooral voor de stabiliteit en performance van je site.

Er bestaat een module: jQuery Update , maar helaas wordt hiermee ook niet de nieuwste versie toegevoegd.

Deel 1: Zelf jQuery-biblitheek toevoegen...

LET OP: verwijder NOOIT de jQuery-versie die met drupal wordt meegeleverd. Deze is nodig om de core-modules vlot te laten werken.

jQuery kun je op verschillende manieren toevoegen, nl. lokaal, of via een repo. Mijn voorkeur gaat naar de tweede mogelijkheid.

De nieuwste versie kun je via verschillende aanbieders 'binnenhalen', nl:

  • jquery.com
  • Google
  • Microsoft
  • ...


Als vb. nemen we de CDN van Google. (zie hieronder)


De link in het groen zullen we in de head van je subtheme plakken.

1. Open ../sites/all/themes/je_theme/templates/html.tpl.php
(het is mogelijk dat html.tpl.php niet in de template-directory van je_theme staat. Deze kopieer je dan uit je hoofdtheme en plakt deze in de template-directory van je_theme.)

Plak nu de groene link vd Google-site tussen de head-tags van je browser.
Wijzig nu het versienr. die in de link vermeld staat naar de laatste versie: .../2.0.3/...
Zorg er wel voor dat deze jQuery-link boven de drupal $scripts staat. Dit is nodig daar anders de standaard jQuery-bibliotheek overschreven wordt.

Daar er nu jQuery bibliotheken aanwezig zijn, kan dit voor conflicten zorgen. Dit lossen we op  door volgende regel toe te voegen:

<quote>
<script type="text/javascript">var $j = jQuery.noConflict();</script>
</quote>

Standaard gebruikt jQuery $ . De extra jQuery-bibliotheek geven we dus een andere alias; in ons voorbeeld $j, zo ontstaan er geen conflicten tussen beide bibliotheken.

In onderstaande schermfbeelding zie je tussen
<quote>
<!-- Extra jQuery - START -->
...
<!-- Extra jQuery - END -->
</quote>
hoe je header er zou moeten uitzien.




Je kunt controleren of de jQuery-bibliotheken actief zijn door volgende regels te typen in de console van de developer-plugin van je browser:
<quote>
jQuery().jquery
$j.jquery
</quote>
Resultaat:





In mijn voorbeeld zijn volgende bibliotheken actief: 1.10.1 en 2.0.3


Deel 2: jQuery code typen die de 2.0.3-versie gebruikt.

Maak een nieuw javscript-bestand aan met de naam custom_scripts.js in ../sites/all/themes/je_theme/js/
en voeg volgende code toe zoals in onderstaande afbeelding:


Als je nu de nieuwste jQuery-versie wil gebruiken voeg je gewoon de code toe in het bovenste gedeelte waar // jQuery code staat. Of gebruik je liever de stadaard megeleverde jquery-bibliotheek, dan voeg jeje code toe aan het onderste gedeelte.

Maar het is nog niet gedaan!

Bijna...

Momenteel is het bestand custom_scripts.js nog niet gelinkt met je site.

Open ../sites/all/themes/je_theme/je_theme.info

Voeg volgende regels toe onderaan het bestand:

<quote>
; jQuery/Javascripts Scripts
scripts[] = js/custom_scripts.js
</quote>

Leeg alle caches van je drupal-site en test je website met de nieuwste jQuery-bibliotheek!

Alle info over dit artikel had ik hier gevonden en met succes toegepast op mijn eigen site!




donderdag 3 oktober 2013

Drupal7:Form-id weergeven en overriden

Tijdens het coden in Drupal is het soms handig om de form-id te kennen, dit om bepaalde formulieren te overriden.
Uiteraard bestaat er een zeer goed module hiervoor, nl: Devel.

Maar het kan nog sneller...

1. Form-id weergeven



Zoals je in de afbeelding ziet, weet je onmiddelijk de form-id. In bovestaande afbeelding is de form-id: user_login .

Om deze melding te krijgen voeg je volgende code toe aan je /sites/all/themes/mijn_theme/template.php:


function MIJN_THEME_form_alter(&$form, &$form_state, $form_id) {
  // Show form_id
  drupal_set_message("Form ID is : " . $form_id);
}


Vergeet niet de naam MIJN_THEME te vervangen door de naam van je eigen theme, en na het opslaan van template.php de caches te legen!

Wanneer je nu op een pagina met formulier terecht komt staat nu de id van je formulier erbij.

Waarvoor kunnen we dit gebruiken? Als je formulier wil aanpassen naar je eigen wensen. Voorbeeld om een extra class-CSS toe te voegen aan je formulier.

In dit code-voorbeeld ontbreekt de class-tag:

<form method="post" action="login">


Mét class-tag:

<form class="test" method="post" action="login">


Ok, hieronder het verlossend antwoord...


2. Formulier overriden

Om bovenstaand code-voorbeeld op te lossen voegen we eenvoudigweg volgend stukje code toe aan je template.php.


function MIJN_THEME_form_alter(&$form, &$form_state, $form_id) {
  // Show form_id
    drupal_set_message("Form ID is : " . $form_id);
 // Node edit form
    if ($form_id == "user_login") {      $form['#attributes'] = array('class' => 'test');  
  }  
}


Klein woordje uitleg: De form-id wisten we al user_login.

Als (if) form-id = "user_login"{
 voeg dan volgend attribuut toe class="test"

Voila! That's it!

Op deze manier kun je alle formulieren aanpassen, door het toevoegen/aanpassen van elementen, attributen, enz...

Voor alle mogelijke aanpassingen van formulier-elementen kun je terecht op de Drupal API pagina.

Succes!