For fuck’s sake, Drupal!

maandag 24 september 2012 in Sonstiges. Permanente link | 10 reacties

Okay, dan hebt ge dus zo’n website draaien met Drupal, zonder noemenswaardige problemen.

Om de zoveel tijd een update, dat gaat allemaal relatief pijnloos, iedereen content, iedereen tevreden. 

En dan ineens: de kalender werkt niet meer. Hoe, de kalender werkt niet meer? Eén van de kalenders werkt niet meer, blijkbaar. 

Naar http://website.domein/admin/structure/views, klik op “edit” naast de view die het probleem geeft: ERROR 500 INTERNAL SERVER ERROR UW WEBSITE IS NAAR DE KLOTEN MBWAHAHAHAHA.

Bon, error logs van de server nagekeken: 

[Mon Sep 24 17:39:13 2012] [warn] [client 1.2.3.4] mod_fcgid: stderr: PHP Fatal error: Call to a member function summary_title() on a non-object in /home/website.domein/sites/all/modules/views/plugins/views_plugin_display.inc on line 1192, referer: http://website.domein/admin/structure/views

Gaan kijken in de code, wat staat daar?

$row_summary = empty($row_plugin['title']) ? t(‘Missing style plugin’) : $row_plugin_instance->summary_title();
$row_title = empty($row_plugin['title']) ? t(‘Missing style plugin’) : $row_plugin_instance->plugin_title();

Euh ja. Uitcommentariëren, zien wat dat geeft? Ha kijk, ik kan op de pagina waar die view geëditeerd kan worden. Dikke rode foutboodschappen bovenaan:

Notice: Undefined variable: row_title in views_plugin_display->options_summary() (regel 1198 van /home/website.domein/sites/all/modules/views/plugins/views_plugin_display.inc).
Notice: Undefined variable: row_summary in views_plugin_display->options_summary() (regel 1199 van /home/website.domein/sites/all/modules/views/plugins/views_plugin_display.inc).

I’m so happy. En wat ik ook doe, er is geen manier om het op te lossen: onder het kopte “format” blijft bij “display” een waarde van “Broken Field |” staan. 

Zoeken op het internet: honderden websites die dezelfde foutboodschap geven, dus het komt wel meer voor. En nergens een duidelijke uitleg wat of hoe. 

Tot ik toevallig op deze terechtkom: Calendar Block View Broken. Precies de symptomen die ik heb, hierrrrr brandt de lamp, denk ik dus. 

En inderdaad. Na een paar mensen die zeggen dat ze het probleem weg krijgen door hun view te verwijderen en een nieuwe aan te maken, sluit Karen Stevenson het ticket en schrijft ze lakoniek:

I had to create some new calendar components that work better than the old ones did and it resulted in deprecating some old ones. Creating a new view will make everything work.

What the actual fucking fuck? Sinds wanneer worden er stilzwijgend zonder ook maar een vermelding in de release notes dingen kapot gemaakt? 

Bon okay, ik sleur mezelf dan maar weer in “kak, wéér van dat”-modus en ik maak een nieuwe kalenderview aan. 

Die mij prompt een leeg scherm geeft. Géén mogelijkheid om wat dan ook te doen. Hm. Misschien eens die nieuwe view deleten en nog eens alle refreshen en herbeginnen?

Ah, péch. Dikke rode letters:

Notice: Undefined property: view::$export_type in ctools_export_ui->access() (regel 128 van /home/webste.domein/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php).
U heeft niet voldoende toegangsrechten voor deze pagina.

De mengeling van Nederlands en Engels is altijd een beetje lachen, maar bon. Een probleem met Chaos Tools? Ja, manifest wel, maar wat? Niemand heeft een idee: niet hier, niet hier, niet hier, niet nergens. 

Fuck, dus. Trekt uw plan, dus. Bakt u een ei, dus. 

En zo gaat dat maar door. Hier iets veranderen is daar iets kapot maken, en omgekeerd. Om dit probleem op te lossen heb ik moeten zitten prutsen in een database, server logs moeten bekijken en stukken code in de kalendermodule moeten veranderen, alleen maar om een diagnose te stellen. 

De site waar het over gaat, zou eigenlijk moeten kunnen onderhouden worden door mensen die nog net met Office kunnen werken. Ik kan die mensen toegang geven tot veel zaken, maar van zodra het om Views of andere zaken gaat, kunnen het ze met één verkeerde knop compleet kapot maken. 

Drupal is vele keren beter dan veel andere dingen, maar zeg nu eens ernstig: wie wordt verondersteld zo’n net iets meer complexe site te administreren? Zonder tegelijk kennis van Drupal, php, jquery, html, css, (my)sql en godweetwatnog, is dat toch onmogelijk?

Een uur later is het oorspronkelijke probleem helemaal opgelost, maar heb ik ondertussen gemerkt dat die kalendermodule nóg dingen veranderd heeft. Gratuit. In de gegenereerde html. Waardoor er overal nog dingen mogen veranderd worden in de css, en god weet wat daar dan de gevolgen van zullen zijn elders. 

Zucht.

Ik heb soms de indruk dat elke keer als Drupal een béétje krediet opgebouwd heeft, ze erin slagen om een stunt uit te halen zoals die “oh ja, ‘t is kapot, ja”-boodschap over de kalender, en dan is het voor mij weer allemaal naar de kloten. 

Een sliderken

vrijdag 23 september 2011 in Computers en dingen. Permanente link | 4 reacties

Ik dacht: ik ben dat eigenlijk een beetje beu gezien, het laatste nieuws op de website van de school dat zomaar in een saaie tekstlijst staat.

Wat als ik eens de laatste, oh, pakweg vijf items neem, en zet die in zo’n javascriptslidergedoe? Zo eentje dat animeert en alles, dat ik een beeld in het groot kan zetten en dan de reader erover en zo?

Moeilijk is dat allemaal niet met Drupal en jquery tegenwoordig: een nieuwe view aanmaken met daarin alleen die artikels en velden die mij interesseren (afbeelding en teaser en link van de laatste vijf “toon op homepagina”-artikels van de humaniora), wat prutsen in de html van die view, er wat css op smijten, pakweg slidesjs op loslaten, hey presto.

Dat was zo rond halftwaalf.

Altijd een uitstekend idee om aan dergelijke dingen te beginnen op zo’n uur: al half voos van te moe zijn, en dan de stomste dingen eerst over het hoofd zien (van het genre “ah fuck ja, $ werkt niet meer in Drupal 7, dat moet met een (jQuery), dáárom werkt het verdomme niet”), en dan natuurlijk weigeren op te geven tot het ongeveer doet wat het zou moeten doen, toch minstens in Chrome en toch minstens in een eerste versie.

En dan is het bijna twee uur voor het af is. Gedomme.

update en dan denk ik, ik kijk par acquit de conscience nog eens hoe het er op de telefoon en de tablette uitziet, en dan feck ‘t is waar ook, ik had er zo’n media query spel in gestoken voor als het scherm minder breed zou zijn dan 1280 pixels en met mijn te rap willen ervan af zijn heb ik die css met absolute pixels gedaan en aargh… voeg er nog maar eens een minuut of tien extra aan toe.

En zou ik nu nog eens gaan kijken hoe het er op oude Internet Explorers uit ziet?

Euh, nee. Nee, toch niet.

Van gold plating

woensdag 31 augustus 2011 in Computers en dingen. Permanente link | 10 reacties

Prioriteiten stellen! Als het af moet geraken, is het niet het moment om mieren te neuken!

‘t Zal altijd wel een werkpuntje (urh, dat woord) blijven, vrees ik: ik zo kan zó enorm lastig lopen van de petieterige details waar geen één mens op honderd over valt. En dan dreig ik mij uren bezig te houden met het zoeken naar oplossingen voor die kleine dingen, terwijl ik eigenlijk nog grotere vissen te braden heb.

Voorbeeld?

Ik krijg uitslag als ik ergens iets zie staan als

15 item(s) gevonden

Aaargh! Alleen al het typen, geeft me rillingen! Hoe bloederig moeilijk is het om te zeggen “item” als er één resultaat is, en “’items” in alle andere gevallen? In plaats van de mensen 99,9% van de tijd met die nutteloze haakjes op te schepen?

Nu, dat is meestal gemakkelijk op te lossen, zo’n abominatie. Een variante op

x==1?[item]:[items]

ergens in pleuren, en het is in orde.

Een andere, die meestal iets lastiger we te smurfen is, is deze:

Gebeurtenis
2 september 2011 – 9 september 2011

Gnnn! al die overbodige en informatie! Als het in een tabel staat met een “van”- en een “tot”-kolom, is iets als hierboven in orde voor mij, maar in het gewone gebruik? Dan wil ik mordicus mijn date ranges op deze manier geformatteerd zien:

2 – 9 september 2011
20 september – 5 oktober 2011
30 december 2011 – 3 januari 2012

Oh, ge moest eens weten hoe hard het nijpt om de defaultmanier waarop Drupal het doet aan te passen naar mijn goesting. Hier is de boosdoener:

// Different days, display both in their entirety.
else {
   $output .= theme('date_display_range', 
      array('date1' => $date1, 'date2' => $date2,
      'timezone' => $timezone)); }

En nee, ‘t is niet proper op te lossen op een twee drie. Want met een naieve

jaren verschillend?
     ja: toon dmy –dmy
     nee: maanden verschillend?
         ja: toon dm – dmy
         nee: toon d – dmy

is de kous natuurlijk lang niet af: er kunnen een ton verschillende datumformaten bedacht worden in Drupal namelijk, en ik zie niet meteen hoe ik in één moeite allerlei gevallen tegelijk kan behandelen:

2 – 9 september 2011
2011 (2 – 9/9)
September 2nd – 9th, 2011

…en dus wordt het ergens iets op theme-niveau, voor dat ene veld in die paar content types.

Maar daar heb ik nu geen tijd voor, wegens dat ik nog een bidet vol andere katten af te ranselen heb.

Hoepels

zondag 28 augustus 2011 in Computers en dingen. Permanente link | 5 reacties

‘t Is toch wel wat: dan zit ik een website te maken met Drupal en lukt alles zo ongeveer zoals het zou moeten lukken. Hoera, leve vanalles, ‘t is een groot gemak, iedereen is content, en ik heb de indruk dat het mensen zijn die op dezelfde manier denken als ik die al die dingen gemaakt hebben.

En dan kom ik op een ding terecht waaruit (misschien) blijkt dat ik er, ahem, eigenlijk niets van snap.

Gegeven een organisatie die in allerlei geledingen nieuws en kalenderinfo en verslagen produceert, wil ik ergens een plaats waar alle kalenderinfo bij elkaar te vinden is. En dan bij de verschillende geledingen van die organisatie telkens menu-itempjes nieuws, kalender, verslagen, en daarin alleen wat van die ene geleding is.

Simpel, dacht ik zo.

  1. Ik maak een content type kalenderinfo aan, en een content type artikel (verslagen hebbben dezelfde velden als nieuws, ze komen gewoon ergens anders te staan).
  2. Ik maak mijn informatie over de organisatie aan in gewone basispagina’s, die ik in een structuur giet door ze een menu-entry te geven.
  3. Ik maak een kalenderview aan en zet dat ergens in het hoofdmenu bovenaan: dat geeft proper wat het moet doen

Enfin, ja, ik zeg: dat doet proper wat het moet doen, maar er zat toch nog wat fiedelen met Menu Blocks en met een nieuw menu bij.

Wegens dat een kalenderitem zelf geen menu-item heeft, en dat het dus wat zooien was om links toch iets degelijks te krijgen als ik een individueel kalenderitem aan het bekijken ben.

Ah, maar wacht eens, dacht ik dan plots: er is toch zoiets als de Context-module? Daarmee kan ik gewoon zeggen “ALS nodetype = artikel en taxonomie = categorie:HR>verslagen DAN toon menublok hoofdmenu (levels 2+) in de eerste zijbalk en zet menu active class op home > HR > verslagen”. Juist? Juist?

Ah ha ha. Niet juist, dus.

Het ding weigert onder alle omstandigheden dat ene menublok te tonen (okay, toegegeven, het is een menu block en geen ingebouwd Drupal-menu, maar dat zou niet mogen uitmaken), én het ding weigert onder alle omstandigheden te beseffen dat hij op een pagina zit met een bepaalde taxonomieterm (toon blok X op alle artikelpagina’s, dat doet hij, maar toon het op alles met taxonomieterm Y, doet hij niet).

En het ergste van de zaak? Zoals altijd, bij Drupal, is het mij compleet onduidelijk of ik ergens iets niet begrijp, dan wel of er ergens een bug in één van de modules zit die ik nodig heb.

Al die modules bevinden zich in verschillende stadia van development / beta / release candidate, en ze hebben allemaal, van de eerste tot de laatste, één ding gemeen (naast de onvermijdelijke bugs): de documentatie trekt op geen ouwe slets.

Als er al documentatie is, is het een amalgaam van documentatie voor verschillende versies door elkaar, met verschillende UI’s en functionaliteiten. En wordt er meer gesproken over “in vergelijking met versie 6.x-1.7.x-dev is er dit lichtjes anders” dan dat er concrete, reproduceerbare voorbeelden gegeven worden.

Maar goed, het zou mij dus niet zou verbazen dat het mijn eigen schuld is en dat ik het niet snap. Ik ben geen specialist, ik kijk maar om het jaar of zo eens naar Drupal tot ik in een situatie als deze zit, met iets dat zou moeten werken maar het niet doet.

En dan geef ik het meestal na lang prutsen en zoeken gedegouteerd op.

(Maar deze keer dus niet, het moet gewoon werken.)

Spannend hoor

maandag 22 augustus 2011 in Computers en dingen. Permanente link | 2 reacties

Die keer dat ik een website ging maken met Drupal, en dat ik dacht dat het wel eens een goed idee zou zijn om de meest recente versie van alles te gebruiken.

En dat wil dan zeggen CTools en Date en Calendar en Views allemaal in –dev.

Op een echte site die echt online moet gaan. Nee, da’s niet slim, ik weet het.

Drupalflickrdr

donderdag 21 februari 2008 in Sonstiges. Permanente link | 3 reacties

Ik zet voor een nieuwe site die ik maak alle tekst en zo in Drupal, maar alle foto’s op Flickr.

Zou er zo geen Drupalmodule bestaan waarbij ik bijvoorbeeld

kan zetten in mijn tekst, en dat die dan per default het 500px breed formaat in de pagina gooit, met een lightbox-link naar een groter formaat?

En dat ik bijvoorbeeld

zou kunnen zetten, en dat die dan hetzelfde zou doen met de 240px brede foto, en mutatis mutandis square, thumbnail, large en original?

En dat ik pakweg

[flickrset:http://www.flickr.com/photos/zog/sets/72057594055707488/]

zou kunnen doen om alle foto’s van een set in square-formaat (75×75) te tonen met telkens een lightbox-link erop? En

[flickrset:http://www.flickr.com/photos/zog/sets/72057594055707488/;thumbnail]

voor thumbnails, enzoverder?

Mijn probleem is namelijk dat ik van collega Bart hoor dat mensen in de war geraken als ze op een schoolwebsite een link naar Flickr volgen, en dat ik daar helemaal in kan geraken dat dat zo is.

Maar dat er zo geen ding voor Drupal bestaat. Ik zal het misschien zelf moeten doen, urgh!

update Oh, hang on: http://drupal.org/project/flickr

Views in Drupal 6

zondag 17 februari 2008 in Sonstiges. Permanente link | 17 reacties

Miljaarde, dat is handig. En de interface heeft nog wat werk nodig, maar het komt echt in de buurt van zeer goed.

Op die manier is het natuurlijk wél een plezier om te werken.
(het klinkt alsof ik in een onderzeeër zit omdat ik alleen een plastieken voice-over-ip-usb-telefoontje had om stem mee op te nemen, en dat de televisie en de droogkast aan stonden)

Na een dag Drupal

zondag 17 februari 2008 in Sonstiges. Permanente link | 8 reacties

Okay. Drupal is een fijn dink, zo ver zijn we. Pagina’s aanmaken, menu’s, tijdsgebonden blogpostachtige dingen, allemaal goed en wel.

Ik maak een website voor een school, van eerste kleuterklas tot zesde humaniora. Die website zou wel eens kunnen gebruikt worden door heel wat verschillende mensen, dus het is wel de bedoeling om het goed te doen: zowel wat de indeling betreft als de manier van werken als de future proofheid van het ding.

Er zijn dingen die niet veel veranderen, en er zijn dingen die aan een bepaalde klas in een bepaald schooljaar verbonden zijn. Voor dat laatste komt een taxonomie goed van pas: ik heb 2007–2008, en daarbinnen de kleuterschool, de lagere school en het humaniora, en dààr dan weer binnen de verschillende klassen.

Dus als er een verslagje is van het bezoek van Sinterklaas aan de basisschool komt, dan maak ik een artikel aan en geef ik het “kleuterschool” en “lagere school” mee (binnen “2007–2008”, natuurlijk). Als het een bezoek van een schrijver aan klas 5B is, dan vink ik enkel “5B” aan, etc.

Op die manier kan ik volgend jaar gewoon weer opnieuw een klas 5B hebben, maar dat zal dan wel een andere 5B zijn. En kan ik nu, pakweg, op de pagina van de lagere school alle recente gebeurtenissen tonen die voor de lagere school waren (de hele school, of één of meer klassen). Een groot gemak.

Wat ik nog niet gedaan heb, omdat ik hoofd– van bijzaak wil onderscheiden, is een ander dan het standaarduitzicht gebruiken. De site ziet er nu nog standaard-Drupal uit, een eigen layout kan nog wel wachten.

Ik heb ondertussen een redelijk deel van de bestaande inhoud overgezet, en ik heb er een goed oog in dat het allemaal wel zal lukken.

Op den duur.

Echt wel op den duur: Drupal werkt uitstekend als het werkt, maar als het niet werkt, oh my. Er zit heel wat in de core van Drupal 6 (meer dan vroeger), maar het blijft toch wel noodzakelijk om nogal wat modules te gebruiken.

En daar wringt het voor het moment wel: een aantal levensnoodzakelijke modules zijn nog hoegenaamd niet klaar voor versie zes. Zo bijvoorbeeld CCK, dat er wel bijna is, maar toch niet helemaal. En Views, dat onder heel erg zware constructie is.  En Event, dat allemaal zeer vieze fouten geeft. En Date, dat gewoon niet werkt. En Pathauto, dat niet goed werkt want Token is kapot.

En een beetje van een goed werkende wysiwyg-editor (voor leken, remember), dat is echt wel heel hard zoeken. Een propere manier om met beelden om te gaan (upload, resize, beheer) is bijzonder ver zoek. En nog zo enorm veel andere dingen. Bricolage, meneer.

Miljàààrrrr een mens zou zich daar kunnen in opwinden. En het is dus niet alleen omdat het Drupal 6.0 is die net uit is hé: voor zo ongeveer alles is er een 4.7–versie met nog wat issues en die niet meer up to date is, een 5–versie met nog wat issues waar ze aan aan het werken zijn, en zeer soms een 6–versie waar ze van plan zijn om er nog hard aan te werken.

The mind boggles. Afijn, ik heb tijd. Niet van plan om zelf te gaan programmeren, no way. Ik kan wachten.

Een nieuwe website, en dergelijke

zaterdag 16 februari 2008 in Sonstiges. Permanente link | 2 reacties

Ik ben een website aan het maken, die zal beheerd worden door mogelijks heel veel verschillende mensen.

Er zijn geen deadlines, er is geen budget, er zijn niet echt richtlijnen. Dat is redelijk verlammen aan de ene kant, maar andere andere kant ook wel een groot gemak.

In de loop van vorige week er dan maar ernstig aan begonnen, in eigen beheer en op eigen tempo—na een paar maand schemerbestaan op Dreamhost:

  • Stukje webruimte gekocht bij Openminds: mensen met een uitstekende reputatie, en ook Gents. De eindgebruiker zit ook in Gent en zat er heel erg mee in dat ze naar Amerika zouden moeten gaan voor support en zo.
    Ik heb er een halve gigabyte ruimte, maar ik ben niet van plan er veel beelden en geluid en filmpjes en zo op te zetten.
  • Foto’s: Flickr pro account aangemaakt.
  • Filmpjes: Youtube-account aangemaakt.
  • Andere grote bestanden: een media.domeinnaam.tld-account aangemaakt bij Dreamhost, voor voor (virtueel) onbeperkt downloaden van pakweg zware Powerpoints of dergelijke.
  • CMS geïnstalleerd: Drupal 6.0. Na jàren zagen en doen, uiteindelijk dan toch.
  • Mail: GMail. Om één centraal adres te hebben, waar ook nog eens een redactiekalender en Google docs en zo kunnen aan hangen. Het Gmail-adres zal wel niet getoond worden, het zal een info@ worden die er naar verwijst, zoals bij Gentblogt.
  • Statistieken: Google Analytics tracker geïnstalleerd.

Mensen, mensen, mensen. Zó een enorm gemak dat al die dingen zijn, en zó dat ik er naar uitkijk.

Godverdju

donderdag 14 februari 2008 in Sonstiges. Permanente link | 4 reacties

Als het niet werkt zoals ik verwacht dat het zou moeten werken, en dat ik er geen idee van heb of ik iets verkeerd doe, of ik het verkeerd begrepen heb, of de documentatie slecht is, of er ergens een bug zit, of het de stand van de maan of de straling van de cosmos is die het in de soep doet lopen.

Pak nu dit: Drupal 6.0 gedownload en geïnstalleerd, wat inhoud aangemaakt, beeldjes, modules, tralala, allemaal geen enkel probleem. Ik heb een site met pakweg de volgende pagina’s:

Home
  > Begin
  > Midden
      > Een
          > Dink
          > Plonk
      > Twee
      > Drie
  > Einde

Ik wil dat die pagina’s de volgende URL hebben

website.be/begin
website.be/midden
website.be/midden/een
website.be/midden/een/dink
website.be/midden/een/plonk
website.be/midden/twee
website.be/midden/drie
website.be/einde

OK, geen enkel probleem. In Drupal lukt dat via URL-aliassen (/admin/build/path, of bij de aanmaak van de inhoud op voorwaarde dat de module aan staat).

Maar het kan nog eenvoudiger: met pathauto kan ik ervoor zorgen dat alle nodes desgewenst automatisch een URL-alias krijgen. OK, ik dus pathauto (6.x-1.x-dev) gedownload, en ook token (6.x-1.x-dev). Allemaal aan gezet, and we’re in business: bij default path pattern geef ik in

[menupath-raw]/[menu-raw]/[title-raw]

Als ik me niet vergis zou dat precies moeten genereren wat ik verwacht.

Maar: het werkt niet. Het genereert

website.be/begin
website.be/midden
website.be/een
website.be/dink
website.be/plonk
website.be/twee
website.be/drie
website.be/einde

…of met andere woorden: [menupath-raw] en [menu-raw] worden gewoon genegeerd. Aaargh!

OK, en nu voor de hamvraag: doe ik iets verkeerd? Zitten er nog zó grote bugs in die 6.x–dev-versies? En zo ja: is het pathauto of token die raar doet? Of heb ik er niéts van begrepen?

Ik dacht plots dat ik eigenlijk die dingen misschien best niet in het algemene navigatie-menu zette, daar staan al alle beheerdingen in, en misschien gaf dat wel problemen met dat pad (een mens begint op den duur rare dingen te denken). En dus maak ik een nieuw menu aan, hoofdmenu, verhuis ik “begin”, “midden” en “einde” naar dat hoofdmenu, zeg ik dat het hoofdmenu moet getoond worden in het juiste blok, ga ik naar de juiste pagina… en werkt mijn breadcrumb-ding niet meer!

Gniiii… wat doe ik dààr weer verkeerd? Is dat ook een bug? Heb ik het andermaal niet gesnapt? Moet ik ergens iets aanzetten dat er breadcrumbs gegenereerd worden voor niet-ingebouwde menu’s? Of moet ik een andere module downloaden, pakweg Node Breadcrumb, of Custom Breadcrumbs? Ik weet het niet. En het is te laat om er nog over te denken, het zal voor morgen (straks, vanavond) zijn.

Ik zal er wel geraken hoor, daar in het geheel niet van, maar toch: ik hààt het om me achterlijk te voelen.

WordPress naar Drupal

vrijdag 28 december 2007 in Sonstiges. Permanente link | 7 reacties

Ik hoor dat WordPress niet ondersteund wordt op de servers waar ik een stuk of vier-vijf websites zou willen zetten die ik aan het maken ben. Drupal wel, daarentegen.

En dus moet die hele zooi, die net zo proper werkte in WordPress, naar Drupal overgezet worden. Dat, of op een Dreamhost-achtige server verder werken voor de goedkoop.

Ik heb er niet echt veel zin in, in Drupal, want dat lijkt me veel werk om het voor een doorsnee-niet-ontwikkelaar-gebruiker een beetje gemakkelijk te gebruiken te maken, maar hey, wie weet vergis ik me wel helemaal. En ja, ik weet het: dit is de honderachtentwaalfde keer dat ik dezelfde boodschap over precies dit schrijf.

Het themen is in alle geval al doodeenvoudig: men neme een werkende html-pagina, en men droppe er de volgende stukken in:

In <head>

<head>
    <link rel="stylesheet" href="/<?php echo $directory;?>/styles.css" type="text/css" />
    <link rel="alternate" type="application/atom+xml" title="" href="/rss.xml" />
    <?php print $styles ?>
    <?php print $scripts ?>
    <?php print $head ?>
    <title><?php print $head_title ?></title>
</head>

Zoekfunctie

<?php print $search_box ?>

Hoofdnavigatie

<?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links) ?><?php } ?>

Zijnavigatie

<?php print $sidebar_left ?>

Hoofdinhoud

<h2><?php print $title ?></h2>
<div class="tabs"><?php print $tabs ?></div>
<?php print $help ?>
<?php print $messages ?>
<?php print $content; ?> 

Pagina-afsluiting

<?php print $closure ?>
</body>
</html>

En hopla, meer dan dat had ik niet nodig om het allemaal (althans tot een eerste approximatie) te dupliceren.

Message to de mannen van drupal.org, trouwens: dit is geen erg goede pagina. En ook: een theming overview beginnen met “in versie 4.5 was het zó maar in versie 4.7 is het nu zó en zó is hoe een anatal mensen het gedaan hebben” is denk ik ook zo geen goed idee.

Het kan natuurlijk zijn dat ik daar speciaal in ben, maar als ik een uitleg krijg over iets, dan heb ik het liefst iets dat enorm snel werkt, en dan één degelijk kader, daarna wat meer uitbreiding en verdieping, en dàn pas alle mogelijke legacy stuff en watnog.

Jaja, ik weet het ook: het is een wiki, en ik kan er zelf in beginnen schrijven. Grrr dat ik te weinig tijd heb.

Drupal (vi)

maandag 7 augustus 2006 in Computers en dingen. Permanente link | 6 reacties

Themes, deel twee.

Heel erg snel iets in mekaar flansen, dat was op geen tijd gedaan. Nu eens kijken hoe iets ingewikkelder op poten te zetten.

Dit is ongeveer hoe ik de homepagina er wil laten uitzien:

Gblayouthome

Het legt zichzelf zo ongeveer wel uit: in “weblog” komen gewone “stories”, in “foto van de dag” nodes van het type “foto van de dag”, etc.

De binnenpagina’s hebben geen drie kolommen maar twee, alsdus:

Gblayoutbinnen

Eens op zoek gaan naar hoe dat te bewerkstelligen. Beginnen met de homepagina. Waar kan ik ergens de ruwe structuur aanpassen?

De algemene inhoud, da’s blijkbaar op de pagina te smurfen met een welgmikte

<?php print($content?>

 …en dan had ik dingen als dit voor andere stukken inhoud, zoals sidebars en footers en dies meer:

<?php if ($teenoftander!=""): ?>
<div id="teenoftander"><?php print $teenoftander ?></div>
<?php endif; ?>

…dus ik zou voor de homepagina iets kunnen doen als 

<div id="header"><?php print $header ?></div>
<div id="content">
   <?php print $content ?>
  <div id="sidebar">
    <div id="middlesidebar"><?php print $middlesidebar ?></div>
    <div id="rightsidebar"><?php print $rightsidebar ?></div>
  </div>
</div>
<div id="footer"><?php print $footer ?></div>

…maar waar bepaal ik dat er precies één item van het nodetype “foto van de dag” in het begin van $middlesidebar geplaatst wordt? Eens op zoek gaan. Ik was al eens $GLOBALS tegengekomen, waar een hele waslijst globale variabelen in zitten, maar daar zitten die left_sidebar en right_sidebar nergens tussen. Oh well. Worth a look.

Voor zover ik zie, heten die sidebar-dingen regions in de terminologie van Drupal. Dus alhier mijn licht eens gaan opsteken. Ik moet een template.php aanmaken, en daar definieer ik dan de regions in:

<?php
function Gantoise_regions() {
  return array(

   
'header' => t('header'),
    'content' => t('content'),
    'footer' => t('footer'),
   
'sidebar' => t('sidebar'),
   
'middlesidebar' => t('middle sidebar'),
   
'rightsidebar' => t('right hand sidebar')
  );
}
?>

Voorlopig heb ik er nog geen idee van of ik niet beter een aparte region sou definiëren voor “foto van de dag” en zo, dan wel dat ik het best zo algemeen mogelijk houd. Algemeen beginnen en zien waar ik vastloop, dus. :)

Hm. On a lark even die template.php naar de server gestuurd, en dat lijkt niet al te veel te veranderen. Ik had verwacht dat het vast zou lopen, wegens geen left_sidebar en right_sidebar meer, maar misschien dat er ergens iets gecached wordt? Bwoaf, ik maak me geen zorgen. ‘t moet zijn dat het geen problemen geeft.

Als ik nu naar administer > blocks ga, staan die nieuwe regiosn inderdaad in de drop-downs:

Drupalblocks

Ik vermoed dat alle placements op “header” staan omdat ik de twee bestaande sidebars verwijderd heb? Enfin, eens kijken wat het geeft als ik een paar dingen aanzet en in de twee nieuwe sidebars plonk:

Drupalblocks2

Hrm. Niets. Nada. Rien. Misschien dat ik nù wel eens die rebuild of zoiets moet vinden?
…ah nee, stoopid me: in page.tpl.php stonden nog de verwijzingen naar die verwijderde sidebars. Even veranderen naar

<div id="sidebar">
 <div id="middlesidebar">
  <?php if ($middlesidebar!=""): ?>
  <?php
print $middlesidebar ?>
  <?php
endif; ?>
 </div>
 <div
id="rightsidebar">
  <?php if ($rightsidebar!=""): ?>
  <?php
print $rightsidebar ?>
  <?php
endif; ?>
 </div>
</div>

…en inderdaad:

Gblaydrup

Bon, dat was ook redelijk pijnloos dus… 

Eens nadenken wat de volgende stap is: achterhalen hoe ik een block op meer dan één plaats krijg? Of kijken hoe ik zo’n block een eigen propere layout kan geven? Of gewoon meer lezen en proberen begrijpen waarom de dingen werken zoals ze werken?

Ik heb in alle geval zo’n donkerbruin vermoeden dat ik wel eens in de buurt van views zou kunnen geraken.

Geschreven al luisterend naar: The Bee Gees – – Stayin’ Alive

Drupal (v)

zondag 6 augustus 2006 in Computers en dingen. Permanente link | Geen reacties

Ik zou moeten beginnen kijken naar de lay-outkant van de zaak, but I keep getting side-tracked. Nu dit weer: wp2drupal. Alhoewel…

  • This script is resource intensive. With hundreds of posts and comments, the script can easily exceed 30 second time limit that is usually assigned to PHP scripts. In these cases, you will need to enable set_time_limit() function to let migration process run longer than 30 seconds.
  • wp2module is ready for usual one-man-show blogs and can’t handle multi-user mega-blogs.
  • WordPress’s custom meta-information (inserted in post creation form) are not migrated.

Pretty much completely useless, dus. Gentblogt heeft meer dan tweeduizend posts en een veelvoud aan comments. Dit weblog zit aan door de tienduizend posts en een veelvoud aan comments. En Gentblogt maakt zwaar gebruik van meta-informatie.

Misschien deze? Of misschien mijn eigen conversie schrijven? Waarschijnlijk dat laatste. Pff.

Maar goed. Hopla naar die themes. Onwards & upwards. Theme Developer’s Guide here we come.

OK. Wat lees ik? “In 4.7 the default theme engine that is included with Drupal will be PHPTemplate.” Dan vermoed ik dat het slimmer is om daar meteen in te gaan prutsen zeker?

Ik ga van nul af aan beginnen. Geen idee of dat slim is, maar ik heb niet de minste zin om iets bestaand te proberen aanpassen. Negen kansen op tien vertrek ik dan van iets dat veel te complex is naar mijn goesting, gebouwd om alle mogelijke mogelijkheden ter wereld te doen, met volledige ondersteuning voor vanalles en nog wat.

Bon. Een kwartiertje later, en ik ben serieus op weg. Eén file aangemaakt (page.tpl.php), en één file (style.css) gecopieerd van bij WordPress, en zo ziet het er uit:

Drupal-layout1

Da’s een goed teken. Die page.tpl.php is eenvoudig-men-kan-niet-meer:

<html>
<head><title><?php print $head_title ?></title>
<?php print $head ?>
<?php print $styles ?>
</head>
<body <?php print theme("onload_attribute"); ?>>
<div id="container">
   <div id="header">
      <a href="/"><img id="toplogo" alt="Gentblogt" /></a>
      <ul id="topnav">
         <?php foreach ($primary_links as $link): ?>
            <li><?php print $link?></li>
         <?php endforeach; ?>
         <li id="zoekformulier">zoeken: 
            <form action="<?php print url("search") ?>" method="post">
               <input class="form-text" type="text" size="15" value="" name="keys" />
               <input class="form-submit" type="submit" value="<?php print t("Search")?>" />
            </form>
         </li>
      </ul>
   </div>
   <div id="content">
       <?php print($content) ?>
   </div> 
   <div id="sidebar">
      <div id="middlesidebar">
         <?php if ($sidebar_left != ""): ?>
            <?php print $sidebar_left ?>
         <?php endif; ?>
      </div>
      <div id="rightsidebar">
         <?php if ($sidebar_right != ""): ?>
            <?php print $sidebar_right ?>
         <?php endif; ?>
      </div>
   </div>
</div>
<div id="footer">&copy: 2006 Gentblogt VZW</div>
<?php print $closure;?>
</body>
</html>

En dat is het. Om te beginnen. Dus voor het ogenblik heb ik de “linkersidebar” in de middleside gesmurft en zo, maar alla. Het doet toch al iets.

Ik denk dat ik er voor vannacht maar even mee ophoud. Morgen meer.

Drupal (iv)

zondag 6 augustus 2006 in Computers en dingen. Permanente link | Geen reacties

Waar een klaar hoofd niet allemaal goed voor is: ik had het gisteren opgegeven wegens niet vinden hoe ik event repeat aan de praat kreeg. Gedownload (juiste versie), gecopieerd naar de juiste plaats, juist aangezet in modules, geconfigureerd voor zover nodig, maar het deed toch niets.

Simpel: naar administer > settings > content types gaan en daar voor het “event” content type “allow repeat events” aanvinken.

Dus nu kan ik toevoegen dat er in principe elke eerste maandag van de maand redactievergadering is. En kan ik de vergadering van deze maand verwijderen, zonder die van in de toekomst aan te raken? Yep. Fijn.

Oei: spellingsfout! Er staat keer op keer  “occurance” in plaats van “occurrence”, foei! Even kijken…

- $options = array('this' => t('This occurance only'),
- 'future' => t('This occurance and all future occurances'),
- 'all' => t('All occurances') + $options = array('this' => t('This occurrence only'),
+ 'future' => t('This occurrence and all future occurrences'),
+ 'all' => t('All occurrences')

Oef. Opgelost in volgende versie. Ware het niet zo, ik zou het er zelf ingestoken hebben. :D

 Verder. Nog modules kijken.

Eerst eens kijken wat het geeft als ik het allemaal in het Nederlands zet. Met een beetje geluk zou dat toch moeten lukken… de locale-module aanduwen, naar administer > localisation gaan, de Nederlandse vertaling downloaden en importeren, hopladiejee. Werk perfect, mar ik heb toch niet echt veel zin om voor het moment de hele interface in het Nederlands te verkennen, dus: terug naar Engels.

Maar wel fijn om weten dat het allemaal kàn.

TinyMCE. Zucht. I suppose so, zeker? Liever niet, als ik het enigszins kan vermijden, maar bon. ‘t Is een mogelijkheid, goed om weten ook.

Img_assist, ook zoiets. Zou dat de moeite waard zijn? Eens testen. Geïnstalleerd… en het vraagt dat de image-module aan staat. Tiens, was dat niet zo? Ah nee: image moest nog geïnstalleerd worden. Even doen zie.

Hrm. En nu heb ik het niet gemakkelijk om het beeld met een filter in de pagina te krijgen. Image filter is nochtans geïnstalleerd. Weird. Dàn eens bekijken.

Verder. Whoa. Import HTML, als ik dàt aan de praat zou krijgen om Tuinsafari te importeren… Genoteerd, in alle geval.

Lightbox? Allez ju. Het geeft echt wel zeer mooie resultaten, ik ga ernstig overwegen om het hoedanook op Gentblogt te zetten.

Pathauto ziet er ook redelijk nuttig uit. Zorgt ervoor dat dat elk stuk inhoud een gebruikscriendelijke (of beter, Google-vriendelijke) URL krijgt. Dus in de plaats van /node/23/ krijg je bijvoorbeeld /zeebewoners_in_gent. Of, mits een pattern van “[yyyy]/[mm]/[title]” in de settings van pathauto voor het content type “story” zou je in principe iets moeten krijgen als /2006/08/zeebewoners_in_gent, maar dàt lijkt niet te werken. Misschien omdat die story al een URL Path had?

Tiens, trouwens, img_assist genereert geen XHTML. En er is enkel een left en right align. Dat kan beter.

…het lijkt er op dat het effectief is omdat de, euh, dinges al aangemaakt was. Dit is wat er gebeurt als ik een drie nieuwe trefwoorden aanmaak voor een story-node:

  • Created new alias trefwoord/huisspin for taxonomy/term/25
  • Created new alias trefwoord/huisspin/feed for taxonomy/term/25/0/feed
  • Created new alias trefwoord/foto for taxonomy/term/26
  • Created new alias trefwoord/foto/feed for taxonomy/term/26/0/feed
  • Created new alias trefwoord/macro for taxonomy/term/27
  • Created new alias trefwoord/macro/feed for taxonomy/term/27/0/feed
  • The story was updated.

Leuk. En inderdaad, en dat had ik geeneens gemerkt: blijkbaar heeft zo ongeveer alles een eigen feed in Drupal.

Hrm. Een Dreamhost-issue ondertussen, bij het proberen aan de praat krijgen van (het voor het moment nutteloze) pdfview:

URL file-access is disabled in the server configuration

Er is een oplossing voor, met curl, maar voor het moment toch niet nodig, dus sod it.

Related links is nog zoiets dat me nuttig lijkt. Handig, en meer controle dan wat er nu is op Gentblogt. Meer werk ook, kan ik vermoeden. Te onthouden.

Ach, en dan is er een hele reeks taxonomy-modules. Die ga ik dringend zwaar moeten bekijken voor Tuinsafari, maar voor Gentblogt denk ik dat we er wel geraken met trefwoorden en categorieën.

En dan nog een aantal modules, maar ik denk dat ik er door ben. Next up (en nu écht): het uitzicht veranderen.

Drupal (iii)

vrijdag 4 augustus 2006 in Computers en dingen. Permanente link | Eén reactie

Euh ja, deel (ii) ben ik kwijtgespeeld.

[nog een entry die voor niemand interessant is, ha!]

De les ervan was in ieder geval: lees de openstaande bugs en feature requests van de modules die je aan het gebruiken bent, en je bespaart jezelf ettelijke verloren uren.

Waar ik ondertussen ben: modules—de das blinken Lights van Drupal—aan het aflopen en aan het zoeken naar dingen die me aanstaan en die ik zou kunnen gebruiken.

Ik heb search aangezet, en statistics, en profiles, en upload. En ik heb dutchstemmer gedownload en de site geherindexeerd (alle 11 nodes :)).

Deze had ik vorige keer (vorig jaar? het jaar dààrvoor?) ook geïnstalleerd, zonder hem eigenlijk nodig te hebben: flexinode. Maar deze keer ga ik dat echt wél kunnen gebruiken: pagina’s, artikels, actua, foto van de dag, events, auteurs, … druk.

Eerst eens kijken of die dingen niet al eens aangemaakt zijn, negen kansen op tien wel natuurlijk. Kijk zie: event.

Oh. Probleempje: Call to undefined function: form_textfield() als ik flexinode wil gebruiken. Ah. Ik heb per abuis een flexinode voor 4.6 geïnstalleerd, terwijl mijn Drupal 4.7 is. Herdoen. En hopen dat het niet in de soep loopt met databases en zo.

…lijkt in orde: die update.php ziet er echt wel in orde uit!

Foto van de dag-content type aangemakt: fotograaf, foto (met automatisch aangemaakte thumbnail van 450 pixel aan de langste zijde, en preview van 180 pixel breed, ook autmatisch aangemaakt), datum, legende. Hé bah, de maximumgrootte voor een beeld bij flexinode moet ingegeven worden. Ik geef “0” in, in de veronderstelling dat dat zoals elders  “onbeperkt” betekend, ik krijg geen klachten dus ik vermoed dat het wel in orde zal zijn, maar eigenlijk wil dat blijkbaar (denk ik) zeggen dat ik écht geen beeld groter dan 0 KB mag uploaden. Stoopid.

En de foutboodschap is ook misleidend: “field is required” in plaats van “image is larger than maximum allowed size in KB” of zoiets.

Euh, crap. Het werkt nog niet. Zelfs als ik de grootte op maximum 1024 KB zet. Een op niet-required zetten, dat beeld-veld.

Bleh. Dat werkt natuurlijk, met allemaal automatisch gemaakte thumbnails en alles. Bug. Bah.

Goed. Verder. Die events eens testen. Hm. Ziet er in eerste instantie in orde uit, met een kalender en lijst en alles. Maar: geen recurring events (alhoewel: Event Repeat?), en ‘t is allemaal zeer Engels-centrisch (alhoewel: ik zie localisatiefiles staan, onder meer voor nl). Later eens naar kijken.

[ja, ik weet het, ik zou dit waar van toepassing allemaal moeten loggen in bug reports/feature requests, of beter nog: zelf cvs en editor ter poot nemen en verbeteringen voorstellen]

[maar ‘t is te laat en ik heb geen zin]

[in fact, ik denk dat ik maar eens in mijn nest ga kruipen]

Morgen verder. De rest van de modules op die ene pagina doorlopen, en dan eens de layout aanpakken.

En dààna de vertaling.

Vriendjes

Zoek

<insert standard disclaimer>

Alles wat hier staat is mijn eigen opinie. Het wordt niet nagelezen of goedgekeurd door mijn werkgever voor het on-line komt, en ik bied geen enkele garantie voor kwaliteit of correctheid.

Mijn werkgever is het niet noodzakelijk eens met wat ik schrijf, en het spreekt vanzelf dat hij dan ook op geen enkele wijze aansprakelijk kan zijn voor wat ik hier publiceer.

Ter info

Eén van mijn e-mailadressen is michel [at] zog punt org. Normaal gezien antwoord ik daar, buiten de kantooruren, onmiddellijk op.

Valideert, in principe: css & xhtml.
Gemaakt met WordPress.
Syndicatie: Entries (RSS) en commentaar (RSS).



ISSN 1780-1338