При очередном заказе столкнулся со следующей задачей: необходимо вставить в страницу контактов Joomla карту используя Google Maps. Было два способа: прописать вывод карты в коде файла default_form.php, переопределив стандартный вывод, либо сделать что-то универсальное.
Остановился на универсальном, таким образом заказчик сможет в любой момент изменить карту и ее размеры, а может и вообще скрыть, при этом ему не придется обращаться ко мне.
Для работы нужны два файла:
- \administrator\components\com_contact\contact_items.xml
- \templates\ваш_шаблон\html\com_contact\contact\default_form.php (если нет такого, создаем сохраняя данную иерархию)
Начинаем редактировать первый файл. В нем мы пропишем три дополнительных настройки, которые нужны для показа карты. Заполнить их можно будет в административной части сайта. Открываем файл и видим там кучу параметров, структура следующая:
<params> <param name="testparam" type="text" default="" label="Тестовый параметр" description="Подсказка" /> </params> |
Вставляем три своих параметра после params:
<param name="map" type="textarea" default="" label="Ссылка на карту" description="" rows="10" cols="40" /> <param name="map-width" type="text" default="425" label="Ширина карты" size="5" description="" /> <param name="map-height" type="text" default="425" label="Высота карты" size="5" description="" /> |
С этим файлом закончили, переходим к default_form.php и вставляем в нужном месте (до или после формы обратной связи) следующий код:
<iframe width="<?echo $this->params->get('map-width');?>" height="<?echo $this->params->get('map-height');?>" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="<?echo $this->params->get('map');?>&output=embed"> </iframe> |
Теперь прописав в контактах ссылку на карту, ширину и высоту, можно увидеть на странице контактов карту. Идем дальше, если вдруг мы решим скрыть карту, то надо заранее позаботиться об этом.
Прописываем еще один параметр:
<param name="show_map" type="radio" default="1" label="Показать карту" description=""> <option value="0">Скрыть</option> <option value="1">Показать</option> </param> |
И перед выводом карты ставим условие:
<? if($this->params->get('show_map')==1) { ?> <iframe width="<? echo $this->params->get('map-width');?>" height="<? echo $this->params->get('map-height');?>" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="<? echo $this->params->get('map');?>&output=embed"> </iframe> <? } ?> |
Привет, сделала как описал, но когда вставляю код с конструктора схем проезда, даже при отключенном редакторе код обрезается, карты не выводиться.
Подскажи еще пожалуйста как саму карту вывести в самом конце, под телефоном, адресом и пр.
Вы куда вставляете то? После всех операций, у вас в правой части настройки контактов появится текстовое поле, где никакой (даже включенный) визуальный редактор не работает.
Добавил изображение в статью, чтобы было видно куда надо вставлять ссылку с карты.
Так и делала, но только вставляла код яндекс карт, после сохранения код исчезает, остаются только комментарии к нему.
У Яндекса это по другому делается, а в статье про гугл карты шла речь.
Спасибо за информацию все получилось
Судя по вашему сайту, ничего не получилось у вас.
Делал на другом сайте http://www.tm-fenix.ru/contacts
Тогда извиняюсь. Все хорошо.
\administrator\components\com_contact\contact_items.xml
вставляю:
В /administrator/index.php?option=com_contact&task=edit&cid[]=1
Получаю
Параметры контакта
There are no Parameters for this item
Код ваш обрезался, непонятно что вы вставляете.
В contact_items.xml
между
парамс
…
/парамс
Нужно вставить код для отображения доп.параметров в админке.
Я вам на мейл напишу сейчас.
Если можно, напишите мне на почту!, не могу в форму вставлять код, в принципе копирую из окна и добавляю между тегов
label=»Ссылка на карту»
label=»Ширина карты»
label=»Высота карты»
Удалил русский текст
label=»»
label=»»
label=»» Появилась карта в админке, борюсь далее, чтоб получить её на странице контактов, второй код вставил в созданный путь= templates\a216\html\com_contact\contact\default_form.php
default_form.php Создал вручную, кинул туда код, Карты пока нет! юзую по джумле, смотрю чё не так сделал!
Для редактирования файлов рекомендую Notepad++, там можно выбрать кодировку, в которой будет сохранен файл. Я всегда выбираю UTF-8 (без boom), и с русским текстом все в порядке.
По второй ошибке скорее всего, потому что у вас нет файла default.php в той же папке где и default_form.php
Лучше скачайте беспл.шаблон ja_purity_ii, вот там образцовая папка html, заодно и контент более адекватно будет выводиться.
Да! Вы совершенно правы, глюк именно шаблона установил joomla шаблон и всё заработало, перепрыгнул на старый и старый стал работать, правда на старом перестала работать форма отправки писем. Спасибо за консультации!!!
Рад был помочь.
Подскажите, пожалуйста, как взять ссылку на карту google? Я когда захожу на google.ru/maps, он мне только город выдает. А как сделать чтобы адрес был?
Заходите по своей ссылке. Вводите нужный адрес (город, улица, дом) потом слева вверху будет кнопка «Ссылка», жмете ее и копируете урл своего адреса.
Он мне пишет. Не удалось найти адрес:
Уфа, Айская, 78
Возможно, вы хотите:
Показать на карте: город Уфа
Найти компании, соответствующие запросу Айская, 78, рядом с: город Уфа
Ну значит гугл не знает вашего адреса. Увы, я тут бессилен.
Все равно спасибо! Эх гугль-кугль:)
Карта то работает, но все шрифиы в контактах расползлись. Подскажите, в чём проблема ?
Покажите скрин. Как я могу не глядя подсказать
Вставляем три своих параметра после params:
в какие парамс. там их милион? нужно ли код изменять? дописывать. или так конкретно вставить?
Скрыть
Показать
В первые попавшиеся вставьте, так эти настройки будут выше в списке.
Подскажите, сейчас я нахожусь на такой стадии. Добавил код с данными ПАРАМ в файл contact_items.xml — в параметрах модуля com_contact появились параметры для управления данными карты.
Но с РНРшным кодом у меня проблемы. Изначально файл \templates\ваш_шаблон\html\com_contact\contact\default_form.php у меня отсутствовал. Я его создал соблюдая вложенность папок. В созданном файле добавил код:
После этого у меня пропала форма обратной связи, но начала выводиться карта. Видимо мне все же надо найти правильный файл, куда надо вставлять этот код, после кода вывода формы обратной связи.
Сорри, но в какой файл надо вставлять код:
я так и не понял 🙁
Код вы вставили правильно. Смотрите какая ситуация. Файл default_form.php перекрывает стандартный файл, который выводит форму контактов. Т.е. делаем мы этого только для нашего шаблона, не трогая системных файлов.
Возьмите файлы default.php, default_form.php из каталога components\com_contact\views\contact\tmpl\. Положите их в свою папку с шаблоном \templates\ваш_шаблон\html\com_contact\contact\
И теперь вставляйте код для карты в файл default_form.php
Большое спасибо, все получилось.
Но я все же блок, который указан последним в Вашей статье, никуда не вставлял. Этот блок:
И перед выводом карты ставим условие:
params->get(‘show_map’)==1) { ?>
<iframe width="params->get(‘map-width’);?>»
height=»params->get(‘map-height’);?>»
frameborder=»0″ scrolling=»no» marginheight=»0″
marginwidth=»0″
src=»params->get(‘map’);?>&output=embed»>
Блин… Спасибо огромное 🙂