Я нахожу тип устройства с использованием WURFL. Также я написал плагин для установки шаблона для мобильного просмотра. Пожалуйста, посмотрите на код ниже.
class ZC_Controller_Plugin_Mobile extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
$bootstrap = Zend_Controller_Front::getInstance()->getParam("bootstrap");
$useragent = $bootstrap->getResource("useragent");
$device = $useragent->getDevice();
Zend_Registry::set("useragent", $useragent);
Zend_Registry::set("device", $device);
/**
* @todo change this to be Mobile
*/
//echo $device->getType() . " is the type of device";
if($device->getType() == "mobile") {
/**
* Set the layout to be mobile, here we make sure we streamline what is loaded
* so as to not load things that arent needed.
*/
Zend_Layout::getMvcInstance()->setLayout("mobile");
/**
* Here we check to see if a mobile version of the template exists. if it does then we change the view suffix
* this allows us to load the mobile view if it exists and the defgault view if it doesnt.
*/
$base = APPLICATION_PATH . "/views/scripts/";
$mobile = $base . $request->getControllerName() . "/" . $request->getActionName() . ".mobile.phtml";
if(is_readable($mobile)) {
Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->setViewSuffix('mobile.phtml');
}
}
}
}
Также я создал два шаблона в application/layouts/scripts/
1.layout.phtml (вид рабочего стола)
2.mobile.phtml (Мобильный просмотр)
Когда я запускаю страницу индекса, у меня есть представление, основанное на типе устройства. Теперь структура файла похожа на
application/view/scripts/index/
1.index.phtml
2.index.mobile.phtml
пока все хорошо, теперь я хочу разделить путь просмотра в зависимости от типа устройства. так что у меня будет путь что-то вроде
application/view/scripts/index/index.phtml (Desktop view)
application/mobile/view/scripts/index/index.phtml (Mobile view)
Это будет лучше при разработке сайта на основе представления.
Добрый совет по этому поводу.