Page 1 of 1

Een Joomla 1.5 component zonder legacy mode

Posted: Tue Feb 06, 2007 9:48 pm
by vancanneyt
Legacy modes zijn mss goed om de boel terug te doen werken maar bij de versie erna mag je het weer vergeten. Nu Beta2 aan ons voeten ligt ben ik toch aan het experimenteren geslaan om een bestaand component (eentje van mn eigen extensies) te gaan omzetten naar een 1.5 extensie. Bij het ontwikkelen had ik al wat code klaargestoken voor Joomla 1.5 maar ik zag dat er nog het een en ander was aangepast wat ik dan weer diende op te zoeken, vele errors en connection fouten later is het me dan ook eindelijk gelukt: het werkt, en dat op de nieuwe manier...

urls zijn nu:
index.php?Itemid=1&bekijk=1

Oude componenten mag je dan ook vergeten dat ze werken zonder de legacy mode, toch zullen ze ook eens zonder dat moeten stellen. Info over aanpassen van extensies naar 1.5 vindt je op developer.joomla.org

Wie zelf extensies maakt, schrijf 1.5 code er in een commentaarregel er bij, bespaart je wat werk nadien, of maak een kopie van de map components, de ene map voor 1.0 ontwikkeling en de andere voor 1.5

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Tue Feb 06, 2007 10:26 pm
by An-ie
Hoi Sander,

Bij het bouwen en testen van mijn eerste 1.5 template heb ik bewust de legacy mode uitgelaten omdat ik al ergens had gelezen dat we het in de toekomst toch zonder de legacy mode moeten stellen. Kan beter voorbereid zijn op de toekomst toch?  ;)

Heb je je zelfaangepaste component ergens ter download staan? Ik vind het wel leuk om het eens uit te proberen  :)

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Tue Feb 06, 2007 10:39 pm
by vancanneyt
inderdaad, templates identiek, als 1.6 er dan zal zijn sta je dan ook mooi en zal je dan toch nog moeten de aanpassingen doen, uitstel van executie dus ;)

templates zijn nog eenvoudige koek in vergelijking met componenten, al kan je deze zaken wel in acht nemen die ik tegenkwam die ik nuttig vond te vermelden:

Code: Select all

<?php
// Scripts beginnen met nieuwe define:
defined( '_JEXEC' ) or die( 'Restricted access' );

// mainframe laden
global $mainframe;

// Variabele die verstuurd is via de url ophalen, in dit geval limitstart
$limitstart = intval( JRequest::getVar( 'limitstart', 0 ) );

// Paginanavigatie in Joomla 1.5, eerst oproepen van de paginatie
jimport('joomla.html.pagination');
// nieuwe naam voor de paginatie te maken
$pageNav = new JPagination($total, $limitstart, $limit);
// nieuwe  naam voor weergeven van de navigatie
echo $pageNav->getPagesLinks( "$link" );

// als je verbinding wil maken met database zal je dit moeten gebruiken ipv de global $database:
$database = & JFactory::getDBO();

// parameter van een module ophalen
$parameter = $params->get('parameter', 0);

// itemid is belangrijk geworden, even oproepen, gebeurt dus niet meer via de resuest
global $Itemid;

// voor in orde te zijn met de nieuwe url methodes de zoekformulieren die je eventueel gebruikt aanpassen, veld option mag weg en dit mag in de plaats
echo '<input type="hidden" name="Itemid" value="'.$Itemid.'" />';

// $my is veranderd naar $user
global $user;

?>
categorielinks: index.php?Itemid=181&view=category&id=304

Met bovenstaande kan je al een héél eind vooruit, het zijn zowat de meest voorkomende zaken. Het is alvast eens een goede oefening om wegwijs te vinden doorheen het nieuwe framework en joomla nog meer te ontdekken.

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Tue Feb 06, 2007 11:13 pm
by An-ie
vancanneyt wrote: templates zijn nog eenvoudige koek in vergelijking met componenten
Daarom ben ik ook begonnen met de templates, ik ben nog niet zo lang bezig met Joomla  ;)
Maar wie weet ga ik het ook wel eens proberen om componenten of iets dergelijks aan te passen met jouw code  :D

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Wed Feb 07, 2007 11:22 am
by vancanneyt
kheb gisteren nog mn template getest en werkte meteen, stond al tijdje klaar met 1.5 zaken in, werkt veel beter de xhtml moduleoutput ipv de klassieke tabellen vanuit de 1.0.x

2 van mn eigen extensies werken nu volledig onder de 1.5 termen, nog 4 te gaan denk ik.

vanavond tracht ik een 1.0.x module naar 1.5 te transfereren, eens zien of het ook zo goed zal werken ;)

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Wed Feb 07, 2007 12:44 pm
by sc00zy
[offtopic]
Is het al wel verstandig om extensies om te gaan zetten? Veranderingen in de core kunnen er voor zorgen dat al je werk voor niets is geweest en je alles weer moet aanpassen. Voor zover ik weet is de 1.5 functionaliteit nog niet bevroren.
[/offtopic]

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Wed Feb 07, 2007 2:43 pm
by vancanneyt
klopt wat je zegt Sc00zy, de Beta2 gaat weldra uitkomen en is dan al pak meer geëvolueerd dan Beta1, het is tijdens deze periode (tot de table) dat de omzetting al kan beginnen en deze geregeld te controleren met een 1.5 build. ik verwacht niet dat er enorm grote aanpassingen zullen gebeuren, de grootste zijn al achter de rug en dat is het framework dat nu verbeterd wordt, als je geregeld de SVN checkt dan kan je het goed opvolgen, net zoals de Itemid verandering.
Ik wil dit dan ook enkel maar aanraden voor mensen die eigen extensies hebben en al willen experimenteren met 1.5 en hun extensie al compatibel kunnen maken. Upgraden wordt zo al geen makkie en als je op dat moment nog extensies moet omzetten dan is het helemaal compleet, ruim op voorhan,d geeft je de tijd en het inzicht in het nieuwe Joomla! gedeelte.
Er circuleren al wat 1.5 extensies rond, ik gebruik er zelf eentje van op mn 1.5 testsite ;)

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Tue Feb 13, 2007 9:06 am
by vancanneyt
Nog even wat info geven:

global $my;
veranderen naar:
$my = & JFactory::getUser();

de $my wordt nu meestal vervangen door $user en zal er dan zo uitzien:
$user = & JFactory::getUser();

Voor de plugins:
oude methode
$_MAMBOTS->registerFunction( 'onAfterDisplayContent', 'artikelenbot' );
1.5 methode
$mainframe->registerEvent( 'onAfterDisplayContent', 'artikelenbot' );

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Thu Feb 15, 2007 8:39 pm
by vancanneyt
En ik geef er nog eentje bij:

dit geld voor versies LATER dan vandaag van 1.5 beta, ook nieuwere versies dan JN 2!
sefreltoabs() wordt nu vervangen door JRoute::_()

oud gebruik:

Code: Select all

<?php
sefreltoabs("index.php?task=view");
?>
Nieuw gebruik:

Code: Select all

<?php
JRoute::_("index.php?task=view");
?>

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Mon Apr 02, 2007 7:33 am
by vancanneyt
even verder gaan op mijn laatste post met wat nieuwe info (mja nieuw:D)

Code: Select all

<?php
JRoute::_("index.php?wattedoen=ditdoen");
?>
geparsed zal dit er zo uit zien: index.php?Itemid=99&option=ditismijncomponent&wattedoen=ditdoen
het itemid en de option worden dus automatisch toegevoegd.

met SEF aan, zonder htaccess:
index.php?/dit-is-de-titel-van-mijn-menuitem?wattedoen=ditdoen
met SEF aan, met htaccess:
dit-is-de-titel-van-mijn-menuitem?wattedoen=ditdoen

de standaard joomla componenten zien er gelijkaardig uit maar zijn meestal nog verder geoptimaliseerd met SEF, test het zelf uit met een 1.5 installatie.

Re: Een Joomla 1.5 component zonder legacy mode

Posted: Fri Jun 08, 2007 10:25 am
by vancanneyt
Template aanpassing in xml inzake moduleposities:
voorbeeld XML file:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="template">
	<name>NAAM</name>
	<version>1.0.0</version>
	<creationDate>Vrijdag 18 juni</creationDate>
	<author>Vancanneyt Sander</author>
	<authorEmail>[email protected]</authorEmail>
	<authorUrl>http://www.boem.be</authorUrl>
	<copyright></copyright>
	<license>GNU/GPL</license>
	<description>OMSCHRIJVING</description>
	<files>
		<filename>bestand.extensie</filename>
	</files>
	<positions>
		<position>links</position>
		<position>rechts</position>
		<position>top</position>
		<position>breadcrumb</position>
		<position>user1</position>
		<position>user2</position>
		<position>user3</position>
		<position>user4</position>
		<position>debug</position>
		<position>syndicate</position>
	</positions>
	<params>
		<param name="mijnparameter" type="list" default="1"
			label="dit is mijn parameter" description="en de omschrijving ervan">
			<option value="1">kwak</option>
			<option value="2">kwek</option>
			<option value="3">kwik</option>
			<option value="4">klik</option>
			<option value="5">krik</option>
		</param>
	</params>
</install>