Composer

Composer installeren

De site was in het begin niet opgezet met Composer. Vroeger of later kom je dan toch in de problemen. Ik moest eerst uitzoeken hoe je Composer installeert en hoe je de site kunt omzetten van niet- naar wel-composerized. Eén van de ingewikkeldste dingen maar uiteindelijk is het gelukt. Ik blijf voorlopig in de directory boven public_html. (pjella.nl): de project root. Eerst composer installeren.

Om Composer op te halen en te installeren, heb ik op de Command Line gezet:

curl -sS https://getcomposer.org/installer | php

Toen volgde:

Composer (version 2.4.4) successfully installed to: ........pjella.nl/composer.phar

Use it: php composer.phar

Om te voorkomen dat je telkens voor composer moet intypen: php composer.phar, tikte ik in:

alias composer='/..../composer.phar'

Daardoor kun je een commando beginnen met php composer .....

Composerize

Vervolgens moest mijn nog niet gecomposeriseerde site klaargemaakt voor werken met Composer.

Daarvoor ging ik naar https://github.com/grasmash/composerize-drupal voor de instructies van Composerize.

Ik vulde in, zoals daar wordt geschreven:

composer global require grasmash/composerize-drupal

Daardoor wordt in de public_html-directory de site geschikt gemaakt voor Composer. De vendor-directory wordt naar de directory gehaald waar ik bezig ben. En er wordt een composer.json-bestand gemaakt. Na

composer update "drupal/core-*" --with-all-dependencies

Wordt er ook een composer.lock-bestand gemaakt.

Composer.json

 In het nieuwe composer.json-bestand in de project-root moet je nu alle modules nog aangeven die al geïnstalleerd zijn in jouw systeem:

"require": {   
       "php": "^5.5.9|>=7.0.8",   
       "composer/installers": "^1.2.0",   
       "drupal/admin_toolbar": "^3.3",   
       "drupal/adminimal_theme": "^1.6",   
       "drupal/asset_injector": "^2.12",   
       "drupal/block_class": "^1.3",   
 

Als dat goed staat, moet je weer composer update "drupal/core-*" --with-all-dependencies doen en dan worden alle modules geupdatet.

Daarna heb ik Search API gedownload en geïnstalleerd met:

composer require 'drupal/search_api:^1.28'

Gelukt: het wordt toegevoegd aan het stukje 'require'.

Je kunt Composer zelf ook updaten met: composer self-update

Mijn fout was eerst dat ik in een verkeerde directory zat, nl. in de web-root i.p.v. in de project-root, en dan werd het juist niet in de web-root gezet.

Het kan zijn dat je door een te hoge php-versie niet kunt updaten. Dan kun je achter het commando typen: --ignore-platform-req=php+

Drush

Ik had drush nooit gebruikt, maar je kunt er op de command line wat handigheidjes mee en als je alles goed snapt, misschien wel meer.

Voor de installatie van drush, typ je composer require drush/drush.

Voor clear cache: ./vendor/bin/drush cache:rebuild

Voor updaten van de db: ./vendor/bin/drush updb

Overschrijven van htaccess

Voorkom overschrijven van htaccess

Iedere keer als je composer update uitvoert, worden diverse bestanden vervangen door de laatste versie. Ook als er in Drupal niets is veranderd aan htaccess, krijg je de composer-versie van htaccess geïnstalleerd en dat is onhandig als je een regel aan htaccess had toegevoegd. Om te voorkomen dat je dat telkens handmatig moet aanpassen kun je composer het ontbrekende deel erin laten zetten. Het duurde lang voordat ik het aan de praat had maar ik heb het nu in orde. In composer.json staat een gedeelte:

"extra": {
       "drupal-scaffold": {
           "locations": {
               "web-root": "./de-directory-die web-root-is/"
                        }    
             },

Daar moet een stukje tussen worden gezet dat ervoor zorgt dat er aan het einde van het htaccess-bestand een stukje wordt aangeplakt. Uiteindelijk ziet het er dan uit als:

"extra": { 
       "drupal-scaffold": {

           "locations": { 
               "web-root": "./public_html/" 
                        },    

           "file-mapping": { 
                  "[web-root]/het-htaccessbestandje": { 
                   "append": "./patches/htaccess-toevoeging.txt"   
                                 } 
                          } 
             },

Vergeet het kommaatje voor "file-mapping" niet.

Het "append-stuk" zorgt voor het plakken van een stukje tekst uit ./patches/htaccess-toevoeging.txt. De dir ./patches staat in de project-root.

Rare melding

Na een versiewisseling van 10.5 naar 10.7 kon ik niet verder met de update wegens een melding

De libmysqlclient driver versie 3.1.20 is lager dan de minimum vereiste versie. Upgrade naar libmysqlclient versie 5.5.3 of nieuwer, of verander de mysql drivers naar MySQLnd versie 5.0.9 of nieuwer.

De oplossing vond ik op drupal.org forum

Ik zette het vinkje aan bij nd_pdo_mysql in php-extensies en daarna was de melding weg.

Bootstrap

Ik probeer bootstrap te begrijpen en te starten. Ik experimenteerde met Bootstrap Barrio en Bootstrap 5. Heel ingewikkeld omdat er telkens gesproken wordt van Node.js maar dat is nu duidelijk.

Uiteindelijk heb ik dat weten te installeren door gebruik te maken van https://help.pebblehost.com/en/dedicated-servers/how-to-install-nodejs-on-a-dedicated-server.

Info over Bootstrap, de documentatie, staat op https://getbootstrap.com/docs/5.0/getting-started/javascript/#using-bootstrap-as-a-module.

https://www.drupal.org/docs/contributed-themes/bootstrap-45-barrio-sass-starter-kit/installation was voor het installeren van de Barrio SASS Starter Kit. Het script om een subtheme te maken werkt.

Misschien is dit nog eens een goede link: https://ostraining.com/blog/drupal/how-to-use-bootstrap-5-and-sass-in-drupal-9/

en deze: https://www.youtube.com/watch?v=oAZ6-eADtKY

Bootstrap wel gelukt

Het is gelukt om Bootstrap Barrio SASS te installeren met de volgende handleiding: https://www.drupal.org/docs/contributed-themes/bootstrap-45-barrio-sass-starter-kit/installation

Het hele verhaal van node.js en daarvoor nog nvm moet zich afspelen in de dir van het pjella_bs5_sass thema. Nvm is wel geïnstlleerd ,aar het moet worden geactiveerd met

export NVM_DIR="$HOME/.nvm"  [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm  [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Zie daarvoor: https://heynode.com/tutorial/install-nodejs-locally-nvm/

Daarna volgt het verhaal met installatie van node.js en gulp zoals in de handleiding.

Radix kon ik uiteindelijk ook installeren met de kennis van hierboven.