Drupal 6 expedíció: Internet Corporation smink implementálása

Drupal 6 Internet Corporation theme: Letöltés / Download

Mivel még nem sok Drupal 6 smink készült el és nem akartam a Drupal 6 alapértelmezett sminkjét felrakni az oldalamra úgy döntöttem megpróbálok egy Drupal 5-öst átírni, hogy működjön.
Az Internet Corporation theme mellett döntöttem.

Szerencsére felkerült a Drupal oldalára egy dokumentáció a Drupal 6 sminkeléséről
Ez volt a kiinduló alapom, hogy mégis mért nem müködnek a Drupal 5-ös sminkek a 6-os verzió alatt.

Bevallom őszintén nagyobb problémára gondoltam mint amekkora ténylegesen volt. Az egész megvalósítás nem vett igénybe fél óránál többet, persze miután elolvastam a Drupal oldalán a dokumentációt.
Lényeges különbség, hogy kell egy info fájl, mint a moduloknál. Ebbe kell egy a sminkkel kapcsolatos dolgokat deffiniálni. Milyen css-ek tartoznak hozzá, milyen JavaScript-eket töltösön be automatikusan, milyen régiói vannak stb.

Az Internet_Corporation.info így néz ki, mivel nem igényel különösebb js fájlokat, és a template.php fájlba a régiók definiálva vannak, bár itt is megtehettem volna.
Internet_Corporation.info:

; $Id$
name = Internet Corporation
description = Implements of Internet_Corporation theme for Druapl 6
version = 1.0
core = 6.x
engine = phptemplate
stylesheets[all][] = style.css

Innenstől fogva már nagyjából működött is, persze a blokkok nem jelentek meg, mert megválzotak. Az eredeti Internet Corporation smink nem volt valid HTML úgyhogy eltávolítottam belőle a primary_links-re vontakozó hibát.
A gond az volt, hogy az eredeti Drupal 5-ös sminkbe ez szerepelt:
<ul id="menu">
<?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links, array()) ?><?php } ?>
</ul>

A links_theme ul - li elemeket generál, ezért nem lehet körülvenni egy ul elemmel. Így hát a Drupal 6-os sminkben kicseréltem div-re:
<div id="menu">
<?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links, array()) ?><?php } ?>
</div>

Egy lényeges különség az, hogy mostmár nem a $slidebar_left és $slidebar_right változókkal tudjuk elérni a bal- és jobboldali régiókat hanem a $left és $right változókkal. Így a Drupal 5-ös Internet Corporation theme-ben szereplő
<?php if ($sidebar_left) { ?>
  <div id="left">
    <?php print $sidebar_left ?>						
	</div>
<?php } ?>

kódrészletet ki kellett cserélni Drupal 6 alatt a következőre:
<?php if (!empty($left)) { ?>
  <div id="left">
    <?php print $left ?>						
	</div>
<?php } ?>

Ezután a Drupal 5-ös page.tpl.php-ban szereplö
<?php if ($mission) { ?><div class="mission"><?php print $mission ?></div><?php } ?>

sort ki kellett cserelni a
<?php if (!empty($mission)) { ?><div class="mission"><?php print $mission ?></div><?php } ?>

sorra. Így mér ez is működött Drupal 6 alatt.
Végül eltérés a $footer_message változó hiánya. Ez is megváltozott és a $footer vette át a helyet.
Így a Druapl 5-ös kódban szereplő
<div id="col1"><?php print $footer_message ?></div>

sort egyszerűen kicsereltem a
<div id="col1"><?php print $footer ?></div>

sorra, és innenstől kezdve az Internet Corporation theme, ugyanúgy működött Drupal 6 alatt, mintha Drupal 5-öt használnánk.