Tvinga Drupal att använda temats standardinställningar

  • Posted on: 2 March 2016
  • By: Pontus

För att kunna versionshantering inställningarna för temat så behöver vi kunna spara inställningarna i en fil som vi sedan måste få Drupal till att läsa in inställningarna från. Efter mycket letande så hittade jag en lösning.

Jag försöker versionhantera så mycket som möjligt med git. Men det är svårt att versionshantera inställningarna i Drupal eftersom att de ligger i en database. Det går dock att lösa, iaf om man använder adaptiv theme. Vilken tur att jag gör det. Metoden går ut på att theme.info filen i temat innehåller standardinställningar, som vi sedan tvingar drupal att läsa in.

Efter att jag skrev det här så upptäckte jag en enklare metod. Installera module Strongarm då kan temats inställningar sparas med hjälp av features. Ladda ner och aktivera strongarm. Därefter går du till struktur -> features -> create feature. Under Stongarm finns nu de flesta variablarna i din Drupal installation så även theme_tema_settings. Aktivera den i din feature och alla inställningarna för temat sparas i din versionshantering för den fetaturen. Lite enklare och smidigare än nedanstående metod ... Fast båda fungerar.

Varje gång man sparar ändringar i Adaptiv theme så sparas det i en fil under publika filer, som standard är det under /sites/default/files/adaptivetheme/theme_files. Här finns alla css filer som behövs för att sidan ska se om den ska, de återskapas varje gång man sparar från filerna i temats katalog ( /sites/all/themes/tema/ ). Samtidigt som css-filerna skapas så skapas det även en fil som innehåller alla inställningar, den heter tema_settings.info.txt. Genom att kopiera in den och ersätta temats tema.info fil med den här så får vi med den i versionshanteringen. När vi sedan pushar ändringnar mot produktionssidan så kan vi med hjälp av en sandbox modul återskapa inställningarna från den här filen. 

Modulen som vi behöver heter Nukem och finns bara som en sandbox projekt. Du kan hitta Nukem projektet här. Koden för själva modulen finner vi här. Eftersom att den inte har släppts i en fullversion så måste vi hämta den med git. Gå till modulkatalogen och skriv följande (förutsätter dock att du redan har installera git )

git clone git://git.drupal.org/sandbox/jmburnz/1685382.git nukem

Nu finns modulen och vi kan aktivera den som vanligt i Drupals kontrollpanel.

När modulen är aktiverad så tillkommer det en flik under Utseende som heter Nukem. Där under kan vi nu rensa alla inställningar för ett inaktivt tema. När vi sedan aktiverar temat igen och går in och sparar inställningarna så kommer standardinställningarna från tema.info filen att läsas in. Tada vi kan versionhantera inställningarna för temat och flytta dem från dev till staging och slutligen till prod.

Arbetsflödet ser nu ut som föjande:

  • Ändra inställningarna för temat och spara.
  • Kopiera /sites/default/files/adaptivetheme/tema_files/tema_settings.info.txt till /sites/all/themes/tema/tema.info.
  • Commita ändringarna och pusha över de till staging/prod.
  • Sätt sidan i underhålls läge.
  • På staging/prod gå till Utseende och byt standard tema till ett annat, inaktivera sedan temat vi ska läsa in inställningarna för. 
  • Gå till fliken Nukem och välj temat. Klicka sedan på Radera. 
  • Aktivera temat som standardtema under lista och klicka på inställningar för temat.
  • Nu ska alla inställningar vara som i tema.info filen, klicka på spara och allt sparas i databasen.

Tada vi har versionshantering på inställningarna. 

Temat Omega ska enligt uppgift ha en knapp för att återställa till standardinställningarna. Det vore önskvärt om AdaptivTheme kunde få det också.

 

Kategorier: