PDA (КПК, WAP) версия сайта на joomla

На данный момент крупнейшие поисковики (уверен насчет 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[^>]+&gt;|is',       '', $body );
		if( $is_remove_iframe ) {
			$body = preg_replace( '|<iframes[^>]+ /&gt;|is',  '', $body );
			$body = preg_replace( '|<iframe.+>|is', '', $body );
		}
		if( $is_remove_object ) {
			$body = preg_replace( '|<objects[^>]+ /&gt;|is',  '', $body );
			$body = preg_replace( '|<objects.+>|is','',$body );
		}
		if( $is_remove_embed ) {
			$body = preg_replace( '|<embeds[^>]+ /&gt;|is',   '', $body );
			$body = preg_replace( '|<embed.+>|is',   '', $body );
		}
		if( $is_remove_applet ) {
			$body = preg_replace( '|<applets[^>]+ /&gt;|is',  '', $body );
			$body = preg_replace( '|<applets.+>|is','',$body );
		}
		if( $is_remove_script ) {
			$body = preg_replace( '|<scripts[^>]+ /&gt;|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;amp;lt;module&amp;amp;gt; tags&amp;lt;br /&amp;gt;[default: no]">
	<option value="0">no</option>
	<option value="1">yes</option>
</param>

Удалится модуль окруженный тегами <!—erase—> и <!—erase—>.
Трик: в настройках pda-плагина можно указать позицию, в которой опубликован нужный только в мобильной версии модуль.

Комментариев: 3

  • 03.01.2011 NeOdin:

    Не работает ссылка на скачивание плагина.

    • 03.01.2011 Кирилл:

      Насколько я понял, проект pda-plugin for joomla трансформировался в mobilejoomla.com. Ссылку исправил.

  • 10.02.2011 Ильмир:

    Отличная вещь! все через мобилу лазиют!


Добавление комментария:

 css.php