Un modo "quick" e solo un poco "dirty" per giocare con la discriminazione dei contenuti grafici in base al dispositivo che accede al nostro sito web. In pratica un semplice switch del template in base all'user-agent e/o alle sue caratteristiche. Quick lo è sicuramente e dirty solo perchè ci sono modi più razionali per fare questo, con l'impiego di molto più codice, ma non è sbagliato e soprattutto vuol essere solo un idea,... liberi di farci ciò che meglio credete.
Devo innanzitutto preoccuparmi di trovare un trigger che determini il "punto" del codice dove intervenire con il mio switch. L'evento che ritengo essere quello più corretto è onAfterDispatch(); ,che viene definito come:
This event is triggered after the framework has dispatched the application.
Dispatching is the process of pulling the option from the request object and mapping them to a component. If the component do not exist, it handles determining a default component to dispatch.
When this event is triggered the output of the component is available in the document buffer.
Quindi nel mio plugin:
function onAfterDispatch(){ $mainframe =& JFactory::getApplication(); $mainframe->setTemplate('Mio_Template_Dedicato);
Prima però di scegliere quale sarà il template adatto dovrò individuare il dispositivo che mi sta visitando e per fare questo ricorro alla classe JBrowser();
In pratica dovete solo includerla e usarne i metodi:
jimport( 'joomla.environment.browser' ); $this->navigator = JBrowser::getInstance(); if($this->navigator->isMobile() ){ $mainframe->setTemplate('mobile'); }
Direi che non c'è più nulla da dire, c'è solo da provare e sperimentare come usare tutto al meglio. Usando triggers diversi può essere anche un'ottimo strumento di "respingimento" di certi user-agent, usando un redirect "moved permanently" per redirigere la request.