На данный момент крупнейшие поисковики (уверен насчет yandex и google) преобразуют
сайты в версию для pda (wap) самостоятельно. То есть облегчают по максимуму используя собственные алгоритмы.
Но иногда нам необходимо настроить pda (wap) версию сайта на joomla по собственным требованиям.
В этом нам поможет плагин PDA plugin (его автор известный российский joomlaвод, но страница плагина на английском, обновление информации: видимо проект трансформировался, ссылка обновлена).
Смысл его работы: определить user_agent клиента и подсунуть ему сайт на облегченном темплейте.
Я тестировал плагин, на трех аппаратах (iphone , asus (WMobile, IE+), nokia (symbian, opera)),
все работает.
Мне понадобилась новая настройка «Удаление модулей».
Реализовал так:
функция onAfterRender из pdabot.php
function onAfterRender() { global $mainframe; if($mainframe->isAdmin()) return; $plugin=&JPluginHelper::getPlugin('system','pdabot'); $botParams = new JParameter($plugin->params); $botParams->def( 'removeimg', 0 ); $botParams->def( 'removeiframe', 0 ); $botParams->def( 'removeobject', 0 ); $botParams->def( 'removeapplet', 0 ); $botParams->def( 'removeembed', 0 ); $botParams->def( 'removescript', 0 ); $botParams->def( 'removemodule', 0 ); // вырезание модуля $is_remove_img =$botParams->get( 'removeimg' ); $is_remove_iframe=$botParams->get( 'removeiframe' ); $is_remove_object=$botParams->get( 'removeobject' ); $is_remove_applet=$botParams->get( 'removeapplet' ); $is_remove_embed =$botParams->get( 'removeembed' ); $is_remove_script=$botParams->get( 'removescript' ); $is_remove_module=$botParams->get( 'removemodule' ); // вырезание модуля if( $is_remove_img || $is_remove_iframe|| $is_remove_object|| $is_remove_applet|| $is_remove_embed || $is_remove_module || // вырезание модуля $is_remove_script ) { $body = JResponse::getBody(); if( $is_remove_img ) $body = preg_replace( '|<imgs[^>]+>|is', '', $body ); if( $is_remove_iframe ) { $body = preg_replace( '|<iframes[^>]+ />|is', '', $body ); $body = preg_replace( '|<iframe.+>|is', '', $body ); } if( $is_remove_object ) { $body = preg_replace( '|<objects[^>]+ />|is', '', $body ); $body = preg_replace( '|<objects.+>|is','',$body ); } if( $is_remove_embed ) { $body = preg_replace( '|<embeds[^>]+ />|is', '', $body ); $body = preg_replace( '|<embed.+>|is', '', $body ); } if( $is_remove_applet ) { $body = preg_replace( '|<applets[^>]+ />|is', '', $body ); $body = preg_replace( '|<applets.+>|is','',$body ); } if( $is_remove_script ) { $body = preg_replace( '|<scripts[^>]+ />|is', '', $body ); $body = preg_replace( '|<scripts.+>|is','',$body ); } if( $is_remove_module and $GLOBALS['ispda'] ) { $body = preg_replace( '|<!--erase-->.*<!--erase-->|ism', '', $body ); // вырезание модуля } JResponse::setBody($body); } } </scripts.+></scripts[^></applets.+></applets[^></embed.+></embeds[^></objects.+></objects[^></iframe.+></iframes[^></imgs[^> |
И добавка в pdabot.xml:
<param name="removemodule" type="radio" default="0" label="remove module" description="remove &amp;lt;module&amp;gt; tags&lt;br /&gt;[default: no]"> <option value="0">no</option> <option value="1">yes</option> </param> |
Удалится модуль окруженный тегами <!—erase—> и <!—erase—>.
Трик: в настройках pda-плагина можно указать позицию, в которой опубликован нужный только в мобильной версии модуль.
Не работает ссылка на скачивание плагина.
Насколько я понял, проект pda-plugin for joomla трансформировался в mobilejoomla.com. Ссылку исправил.
Отличная вещь! все через мобилу лазиют!