Создаем сайт с помощью PHP, MySql и jQuery Mobile. Часть 2
В этом уроке мы продолжим создавать наш мобильный сайт. В первом уроке мы написали серверную часть нашего сайта. В этом уроке мы займемся jQuery.
Представления
Представления — это php файлы, которые содержат шаблоны html. Отображать шаблоны будет функция render(). Мы будем использовать 7 представлений – _category.php, _product.php, _header.php, _footer.php, category.php, home.php and error.php. Функция render():
/* вспомогательные функции */ function render($template,$vars = array()){ // передаем функции имя шаблона // и список переменных для формирования представления. extract($vars); // так же функции можно передать несколько шаблонов if(is_array($template)){ foreach($template as $k){ $cl = strtolower(get_class($k)); $$cl = $k; include "views/_$cl.php"; } } else { include "views/$template.php"; } }
Теперь перейдем к самим представлениям. includes/views/_header.php:
<!DOCTYPE html> <html> <head> <title><?php echo formatTitle($title)?></title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.css" /> <link rel="stylesheet" href="assets/css/styles.css" /> <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.js"></script> </head> <body> <div data-role="page"> <div data-role="header" data-theme="b"> <a href="./" data-icon="home" data-iconpos="notext" data-transition="fade">Home</a> <h1><?php echo $title?></h1> </div> <div data-role="content">
Закрывающие теги и «подвал» находятся в includes/views/_footer.php:
</div> <div data-role="footer" id="pageFooter"> <h4><?php echo $GLOBALS['defaultFooter']?></h4> </div> </div> </body> </html>
includes/views/home.php:
<?php render('_header',array('title'=>$title))?> <p>Welcome! This is a demo for a ...</p> <p>Remember to try browsing this ...</p> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <li data-role="list-divider">Choose a product category</li> <?php render($content) ?> </ul> <?php render('_footer')?>
index.php/views/_category.php
<li <?php echo ($active == $category->id ? 'data-theme="a"' : '') ?>> <a href="?category=<?php echo $category->id?>" data-transition="fade"> <?php echo $category->name ?> <span><?php echo $category->contains?></span></a> </li>
В переменной $category хранится объект, для которого сгенерировано представление, когда посетитель нажимает на ссылку вида /?category=id будет показано представление category.php:
<?php render('_header',array('title'=>$title))?> <div> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="c"> <?php render($products) ?> </ul> </div> <div> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <li data-role="list-divider">Categories</li> <?php render($categories,array('active'=>$_GET['category'])) ?> </ul> </div> <?php render('_footer')?>
CSS
media all and (min-width: 650px){ .rightColumn{ width:56%; float:right; margin-left:4%; } .leftColumn{ width:40%; float:left; } } .product i{ display:block; font-size:0.8em; font-weight:normal; font-style:normal; } .product img{ margin:10px; } .product b{ position: absolute; right: 15px; top: 15px; font-size: 0.9em; } .product{ height: 80px; }
Наш мобильный магазин готов!
а где в исходниках использование библиотеки Jquery ?
В исходниках, в папке includes/views в файле _header.php происходит подключение библиотек jQuery Mobile и jQuery, которая необходима для работы первой. Используется библиотека добавлением HTML5 аттрибутов data-role, например, data-role=»listview» в теге <ul> дает список категорий, который пригоден для отображения на мобильных устройствах.
круто спасибо