Een template migreren van Joomla 1.5 naar 3.x

From Joomla! Documentation

This page is a translated version of the page Migrating a Template from Joomla 1.5 to 3.x and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎italiano

Bij het overwegen van een handmatige update van uw 1.5 template zijn er een paar zaken waar u aan moet denken.

Ten eerste, welke vaardigheden heeft u nodig? Om template wijzigingen aan te brengen moet u minimaal basis-kennis hebben van PHP, HTML, XML, CSS en mogelijk enige kennis van Javascript. Als u niet beschikt over de basis begrippen van deze vaardigheden zal veel waar u naar kijkt buitenlands voor u zijn, dus poets uw kennis op of huur een professional in.

Ten tweede, de mate dat uw template verandert moet worden gemeten in termen van nieuwe functionaliteit of ontwerp wijzigingen plannen uw migratie. Maken de wijzigingen gebruik van de nieuwe Bootstrap framework stijl die in Joomla 3 beschikbaar is? Of is het een pure omzetting die de huidige site 1 op 1 vervangt. Terwijl sommige wijzigingen die nieuw zijn in Joomla 3 verplicht zijn (anders zal je template niet laden) zijn anderen verbeteringen en het template zal laden maar ziet er niet uit zoals u wilt.

De doel van dit document is een eenvoudig voorbeeld en geeft een 1 op 1 kopie van het huidige 1.5 template. Voor complexere templates of voor belangrijke uitbreidingen moet u misschien wat onderzoek doen of iemand inhuren die meer ervaring met templates heeft.

Bekijk de basis van templates

Sommige dingen zijn niet veranderd. U moet nog steeds vertrouwd zijn met de basisprincipes van een Joomla template: De map-structuur ie een van deze dingen. Op root niveau heeft u minimaal twee bestanden nodig: “index.php” en "templateDetails.xml" (let op de hoofdletter! ). De meeste templates bevatten op zijn minst 2 mappen: een afbeeldingen map voor de afbeeldingen die uw template gebruikt en een map voor uw css stijling. Meer geavanceerde templates kunnen bijvoorbeeld mappen bevatten zoals: “html” voor het aanpassen van componenten en modules, een “language” map voor het maken van taal-overrides, “javascript” om aangepaste javascript-routines te bevatten.

Zorg dat een map die opgenomen is in het XML-bestand, bestaat in het template dat u upload in Joomla. Als u een bestand in de XML declareert dan moet het bestaan anders laadt uw template niet.

Een voorbeeld van een verbetering in versies groter dan 1.5, is het laten vallen van de verplichting dat alle namen van sub-mappen moeten zijn opgenomen. Voor templates in Joomla 3, geeft u gewoon de mapnaam.

Kijk, voor meer informatie over de basisprincipes van een template, op deze link: Het maken van een basis Joomla! template

XML-bestand wijzigingen

Wat moet er veranderd worden in het templateDetails.xml bestand ( Template manifest bestand )

Het template manifest bestand bevat de informatie die Joomla nodig heeft om het template te installeren. Het XML-manifest bestand is bijna volledig veranderd sinds 1.5 zorg er dus voor dat u het bestudeert en vertrouwd raakt met de basis en de wijzigingen. Uw template zal niet laden als het bestand niet precies goed is.

Document verwijzing type Tag & de installeer/extensie Tag

De XML installatie tag is nu een “extensie” tag. Bovendien moet iedere verwijzing in de DOCTYPE Tag of versienummers nu naar 3.0 verwijzen.

De oude regels zijn iets als dit:

<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://dev.joomla.org/xml/1.5/template-install.dtd">
<install version="1.5" type="template">

Dit moet er nu als volgt uitzien:

<!DOCTYPE install PUBLIC "-//Joomla! 2.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/2.5/template-install.dtd">
<extension version="3.1" type="template" client="site">

Map en bestand tags

Deze regel was altijd geldig en is dat nog steeds: Als u de bestandsnaam of map opneemt in de XML dan moet het bestaan in het geüploade template. Dit is niet veranderd in Joomla 3. Wat wel veranderde is de 1.5 verplichting dat alle bestandsnamen in een map opgenomen moeten zijn. Nu kunt u alleen maar verwijzen naar de map. Vroeger in 1.5 werden bijvoorbeeld uw xml-bestandsnamen afzonderlijk als volgt opgenomen:

<images>
	<filename>images/arrow.png</filename>
	<filename>images/arrow2.png</filename>
	<filename>images/arrow3.png</filename>
	<filename>images/author.gif</filename>
</images>

Voor een Joomla 3 template volstaat dit statement:

<folder>images</folder>

Module Tags

In 1.5, werden module posities gedefinieerd in het template. Dit is niet veranderd. Ze moeten nog steeds opgenomen worden.

Parameters

Parameters zijn optionele functies van templates die het de template-maker mogelijk maken opties aan te bieden voor het stijlen van het template in het Joomla beheergedeelte. In Joomla 1.5 templates werden de parameters opgenomen in een "parameters.ini" bestand op root-niveau. Dit bestand is verwijderd en de parameters zijn nu tags in het XML-bestand.

Dit is een voorbeeld van de inhoud van een parameters.ini bestand:

colorVariation=blue
backgroundVariation=blue

Om de parameters in Joomla 3 te definiëren moet u deze regels aan het XML-bestand toevoegen:

      <config>
		<fields name="params">
		     <fieldset name="advanced">
				<field name="colorVariation" class="" type="color" default="#08C"
					label="TPL PROTOSTAR COLOR LABEL"
					description="TPL PROTOSTAR COLOR DESC" />
				<field name="backgroundVariation" class="" type="color" default="#F4F6F7"
					label="TPL PROTOSTAR BACKGROUND COLOR LABEL"
					description="TPL PROTOSTAR BACKGROUND COLOR DESC" />
		    </fieldset>
		</fields>
     </config>

Voor ingewikkeldere parameter XML tags moet u naar complexere documentatie gaan. Merk ook op dat de index.php bestanden die verwijzen naar de parameter variabelen ook veranderd moeten worden.

Zie deze links voor meer informatie over:

index.php bestand

Wat moet er wijzigen in het index.php bestand?

Index.php bestanden zijn zo gevarieerd als er ontwerpers en programmeurs die ze schrijven zijn. Het index.php bestand in een template voor Joomla 3 is de verzameling van de vele versies die er eerder waren inclusief 1.5, 1.6, 1.7,2.5, etc. Dit template bestand is de "levensader" die leven aan uw huid levert en het heeft toegang tot ieder deel van het Joomla's framework beschikbaar en kan deze stukken gebruiken om ze te manipuleren hoe uw site eruit ziet voor uw gebruikers. Dit is altijd zo geweest en is nog steeds zo. Template ontwerpers en programmeurs hebben gebruik gemaakt van dit feit in voorgaande versies en gaan daar mee door. Dit bestand moet dus heel zorgvuldig onderzocht en behandeld worden.

Wijzigingen die zijn doorgevoerd in het framework voor Joomla 3 kunnen problemen veroorzaken bij oudere templates en bij het weergeven fouten opleveren.Andere templates hoeven niet hetzelfde deel van het framework te gebruiken en goed werken bijna zonder wijzigingen.Een 1.5 template dat bijvoorbeeld de variabele "frontpage" benadert om te zien of ze op de hoofdpagina is of niet. Dit werkt niet in Joomla 3. (Zie onderstaande tabel voor de code ) Of een template een gewijzigd deel benadert of niet zal de beslissende factor zijn hoe veel problemen u zult hebben bij het implementeren van het geüpdate template.

Wees voorbereid een aantal wijzigingen gebaseerd op “best practices” te doen. Hoewel uw index.php kan werken, moet het veilig en efficiënt werken. Bedenk dat iedere pagina die naar uw publiek gaat het index.php bestand gebruikt, dus zorg dat u bekend bent met de aanbevolen methoden voor het Joomla framework en de bouwstenen van een template. Een gedegen studie van het index.php bestand in zowel het Protostar als het Beez Template dat bij het Joomla 3 installatie-pakket zit geeft voorbeelden en best practices voor complexere templates.

Richtlijnen

Hier zijn enkele richtlijnen voor uw Joomla 3 template index.php bestand:

1. Nogmaals, sommige dingen zijn niet veranderd: alle index.php templates moeten beginnen met dit statement:

<?php defined( '_JEXEC' ) or die;?>

Waar voor Joomla 1.5 en nog steeds waar voor Joomla 3.

2. Voor Joomla 3 moet het aanbevolen DOCTYPE ( Document Type Declaration ) HTML5 zijn, aangezien dit door heel Joomla 3 gebruikt wordt. Hier is een voorbeeld:

<!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">

3. Om gebruik te maken van het Joomla 3 applicatie framework:

In 1.5 werd de toegang tot het framework geregeld via de $mainframe variabele. U zou zo iets kunnen zien:

<?php require_once (‘includes/../framework.php' );
$mainframe =& JFactory::getApplication('site'); ?>
vervang dit door:
<?php $app = Jfactory::getApplication();?>

4. Gebruik, om de Heading code op te ahlen dit statement direct onder uw heading tag en laat het volgen door uw stijlsheets. Dit is niet veranderd met Joomla 3 maar vraagt altijd om herhaling:

<jdoc:include type="head" />

5. Om de sitenaam op te halen in 1.5 ziet u misschien dit:

<?php echo $mainframe->getCfg('sitename');?>

Gebruik voor Joomla 3 deze code:

<?php  $app->getCfg('sitename');?>

6. Foutcodes en berichten:

Een betere methode voor het ophalen van foutcodes zit in Joomla 3. U ziet dit misschien in uw 1.5 template:

<?php $this->error->code; ?>
vervang het door deze Joomla 3 afspraak:
<?php $this->error->getCode(); ?>

Voor foutmeldingen is dit een typisch 1.5 statement:

<?php $this->error->message; ?>
Vervang het door dit statement in Joomla 3:
<?php $this->error->getMessage(); ?>

7. Om de template parameters te benaderen en om code zoals deze te vervangen:

<?php $color = $this->params->get('colorVariation'); ?>
met deze aanbevolen manier:
<?php $app = Jfactory::getApplication();
$template = $app->getTemplate(true);
$params = $template->params;
$color = $params->get('colorVariation'); ?>

Dit zal net zo goed werken als voorbeeld:

<?php $app = Jfactory::getApplication();
$params = $app->getParams();
$color = $params->get('colorVariation'); ?>

8. Toegang tot de Global Document Object classes in het index.php template bestand wordt in het algemeen zo gecodeerd:

<?php $doc = Jfactory::getDocument(); ?>

Dit statement is hetzelfde in Joomla 3. Het moet echter gezegd worden dat dit statement niet nodig is om de pagina classes te benaderen, het kan er dus staan, of niet afhankelijk van de oorspronkelijke programmeur. Bijvoorbeeld de code:

<?php $doc =& JFactory::getDocument();
echo 'Current title is: ' . $doc->getTitle(); ?>

is gelijk aan deze code:

<?php echo 'Current title is: ' . $this->getTitle(); ?>


Samenvattend

De tabel hieronder is een snelle verwijzing over code verschillen tussen een Joomla 1.5 en Joomla 3.x template index.php bestand.

Beschrijving In een 1.5 template (index.php)zou u kunnen zien Aanbevolen J3.x template (index.php) code
Eerste regel <?php defined( '_JEXEC' ) or die( 'Restricted access' );?> Geen wijziging
DOCTYPE
<?php echo '<?xml version="1.0" encoding="utf-8"?'.'>'; ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
Toegang tot het Joomla Framework
$app = JFactory::getApplication(); OR 
require_once (‘includes/../framework.php' );
$mainframe =& JFactory::getApplication('site');
Geen wijziging maar moet er zo uitzien:
$app = JFactory::getApplication();
Ophalen HTML headers vanuit Joomla
<jdoc:include type="head" />
Geen wijziging
Ophalen sitenaam
$mainframe->getCfg('sitename');
$app->get('sitename');
Ophalen fout-codes
$this->error->code
$this->error->getCode();
Ophalen fout-berichten
$this->error->message
$this->error->getMessage();
Ophalen systeem-berichten
$this->getBuffer('message')
<jdoc:include type="message" />
Actieve taal
$this->language;
$doc->language;
View
JRequest::getVar( 'view' )
$app->input->getCmd('view');
Taak
JRequest::getVar( 'task' )
$app->input->getCmd('task');
Lay-out
JRequest::getVar( 'layout' )
$app->input->getString('layout', 'default');
ID
JRequest::getVar( 'id' )
Met alias:
$app->input->getString('id');
Alleen ID:
$app->input->getInt('id');
Homepage bepalen
<?php if(JRequest::getVar( 'view' ) == 'frontpage') ?>
<?php $menu = $app->getMenu();
if($menu->getActive() == $menu->getDefault()) ?>
Inhoud
<jdoc:include type="component" />
Geen wijziging
Modules & posities
<jdoc:include type="modules" name="right" style="xhtml" />
Geen wijziging
Ophalen Base URL
$url = clone(JURI::getInstance());
echo $this->baseurl; 
JURI::root()*; 
JURI::base();
$this->baseurl;
Toegang tot Document Page Classes
$doc = JFactory::getDocument();
Geen wijziging

Het gebruik van "$this->" is gelijk.

Toegang tot Template Parameters
echo $this->params->get('colorVariation');
Geen wijziging


Bootstrap stijlen en Joomla 3

Gebruik, om de nieuwe Bootstrap stijling ( 2.3.2 ) op te nemen in uw bijgewerkt template, deze drie regels bovenaan uw index.php, ter vervanging van het php blok van een regel.

<?php defined( '_JEXEC' ) or die;
JHtml::_('bootstrap.framework');
JHtml::_('bootstrap.loadCss', true, $this->direction); ?>

Na deze statements kunt u Bootstrap (2.3.2 ) classes waar u dat wil toevoegen en voordeel hebben van het Bootstrap Framework aangeboden in Joomla 3.


In de herhaling...

Er zijn veel variaties in codeer-praktijken en het succes in het vertalen van een 1.5 template naar een template geschikt voor Joomla 3 hangt af van complexiteit van het oude en het nieuwe ontwerp, en de oorspronkelijke code. Uw template is misschien eerder vanuit Joomla 1.0 geconverteerd! De beste strategie is om de beschikbare documentatie te onderzoeken en vertrouwd te raken met het Protostar- en Beez template in Joomla 3. Code- en structurerings-technieken in deze 2 templates zijn getoetst door de Joomla community en vrijwillige ontwikkelaars – de ware experts over hoe je het best een veilig en betrouwbaar functionerend template kunt maken.

Referenties