CMS WordPress активно используется для создания не только блогов, но также для различных типов сайтов, начиная от простых сайтов-визиток до интернет-магазинов.
В нескольких заметках на своем блоге я расскажу, как можно использовать совместно API Яндекс.Карт и WordPress для создания картографического сервиса.
И начнем мы с установки WordPress на локальный компьютер.
Заходим на сайт по адресу http://ru.wordpress.org/ и скачиваем последнюю версию CMS Worpress.
В качестве локального сервера я использую Open Server — это портативная программная платформа, созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий.
Сайт программы — http://open-server.ru/
Я предлагаю загрузить версию Open Server Mini — урезанная версия Open Server.
Содержит в себе только серверную часть платформы без пакета дополнительных программ и документации по модулям.
Устанавливаем и запускаем программу, смотрите подробнее в этом видео
Устанавливаем WordPress и заходим в его админку.
Заметки на блоге будут представлять из себя метки на карте, а статьи дополнительные страницы.
Чтобы в месте с заметкой хранились значения координат установим дополнительный плагин, который я разработал по аналогичному для Google Maps.
Загрузить его можно здесь.
Устанавливаем и активируем плагин.
Создаем новую заметку и видим новые поля
В поле «Адрес» мы вводим адрес для нашей метки, например Нижний Новгород, ул. Белинского, 59.
Затем нажимаем кнопку «Определить координаты».
С лева от полей ввода появляется карта с меткой, а вполе «Координаты Lat/Lng » значения координат.
Мы можем подвинуть метку мышкой, если адрес определен не правильно.
Далее остальные поля заполняем как обычно.
Название заметки — это название метки, текст замеки будет отображаться в балуне, раздел — это категория метки.
Значок метки мы можем указать в свойстве «Миниатюра записи».
Как видите пока все просто.
Давайте выберем в качестве текущей темы Twenty Twelve, эта тема идет в составе дистрибутива WordPress.
И посмотрим на главную страницу.
Мы видим обычные записи.
Чтобы они выводились в виде меток на карте необходимо создать собственный шаблон.
Я предлагаю простой путь, взять за основу уже готовый шаблон и немного отредактировать его.
Вы можете взять любой шаблон, какой Вам нравиться и отредактировать его.
Я за основу шаблона взял Twenty Twelve.
В начале мы скопируем папку twentytwelve с файлами из каталога /wp-content/themes/ куда-нибудь в другое место на Вашем компьютере.
Переименуем саму папку и отредактируем несколько файлов.
Я переименовал ее в twentytwelveymaps.
Теперь заходим в неё.
С начала нам понадобится создать файл выводящий саму Яндекс.Карту.
Это будет файл map.js и создадим мы его в уже имеющейся папке js.
Вот его код:
ymaps.ready(init); function init () { var myMap = new ymaps.Map("map", { center: [56.326944,44.0075], zoom: 12 }); myMap.controls.add("zoomControl").add("typeSelector").add("mapTools"); for (var i = 0;i < locations.length;i++) { myPlacemark = new ymaps.Placemark(locations[i].latlng, { balloonContent: locations[i].info }, { iconImageHref: locations[i].marker }); myMap.geoObjects.add(myPlacemark); } } |
В этом примере координаты центра карты для Нижнего Новгорода, координаты для своего города Вы сможете определить здесь ()
Далее нам необходимо подключить API Яндекс.Карт и наш новый файл map.js в разделе head шаблона.
Для этого мы открываем файл header.php и сразу после строки
<title><?php wp_title( '|', true, 'right' ); ?></title> |
Добавляем две строчки кода:
<script src="http://api-maps.yandex.ru/2.0/?lang=ru-RU&load=package.full" type="text/javascript"></script> <script type="text/javascript" src="<?php echo get_stylesheet_directory_uri() ?>/js/map.js"></script> |
Сохраняем файл.
Теперь открываем файл functions.php и добавляем в него новую функцию
function get_thumbnail_path($post_ID) { $post_image_id = get_post_thumbnail_id($post_ID->ID); if ($post_image_id) { $thumbnail = wp_get_attachment_image_src( $post_image_id, 'post-thumbnail', false); if ($thumbnail) (string)$thumbnail = $thumbnail[0]; return $thumbnail; } } |
Перед последней функцией twentytwelve_customize_preview_js
Сохраняем файл.
Открываем файл index.php
В нем удаляем весь код начиная от строки
<div id="content" role="main"> |
до строки
</div><!-- #content → |
И вставляем вот этот:
<?php if ( have_posts() ) : ?> <!-- WordPress has found matching posts --> <div style="display: none;"> <?php $i = 1; ?> <?php while ( have_posts() ) : the_post(); ?> <?php if ( get_geocode_latlng($post->ID) !== '' ) : ?> <div id="item<?php echo $i; ?>"> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php the_content(); ?> </div> <?php endif; ?> <?php $i++; ?> <?php endwhile; ?> </div> <script type="text/javascript"> var locations = [ <?php $i = 1; while ( have_posts() ) : the_post(); ?> <?php if ( get_geocode_latlng($post->ID) !== '' ) : ?> { latlng : <?php echo '[', get_geocode_latlng($post->ID), ']'; ?>, info : document.getElementById('item<?php echo $i; ?>'), <?php if ( has_post_thumbnail() ) { ?> // There is a Featured Image marker : '<?php echo get_thumbnail_path($post->ID); ?>' //marker : new google.maps.MarkerImage('<?php echo get_thumbnail_path($post->ID); ?>', new google.maps.Size(20, 34) ) <?php } else { ?> // No Featured Image, use fallback //marker : new google.maps.MarkerImage('<?php echo get_stylesheet_directory_uri() ?>/pink_Marker.png', new google.maps.Size(20, 34) ) marker : 'http://api.yandex.ru/maps/doc/jsapi/2.x/ref/images/styles/cinema.png' <?php } ?> }, <?php endif; ?> <?php $i++; endwhile; ?> ]; </script> <div id="map" style="width: 100%; height: 500px;"></div> <?php else : ?> <!-- No matching posts, show an error --> <h1>Error 404 — Page not found.</h1> <?php endif; ?> |
Сохраняем файл.
Теперь копируем всю папку twentytwelveymaps в каталог шаблонов WordPress /wp-content/themes/.
Заходим в админку, Внешний вид → Темы и активируем новую тему Twenty Twelve/twentytwelveymaps.
Переходим на главную страницу сайта и видим
Нам нужно ещё настроить виджеты, чтобы с правой стороны отображались рубрики.
Мы получим следующее
Кликаем по метке, открывается балун с информацией
Если кликнуть по названию, то открывается заметка.
Можно оставить и так, а можно сделать чтобы при клике по категориям с права на карте выводились метки только данной категории.
Для этого из папки шаблона необходимо удалить файлы category.php и archive.php
А чтобы не выводилась заметка файл single.php.
Уже что-то получается.
Теперь можно сделать отдельные страницы для каждой метки с подробным описанием.
Займемся этим в следующей заметке.
Загрузить тему Twenty Twelve с Яндекс.Картой.