При очередном заказе столкнулся со следующей задачей: необходимо вставить в страницу контактов 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> <? } ?>

qwerty— 12.04.2011 в 11:25 #
Привет, сделала как описал, но когда вставляю код с конструктора схем проезда, даже при отключенном редакторе код обрезается, карты не выводиться.
Подскажи еще пожалуйста как саму карту вывести в самом конце, под телефоном, адресом и пр.
[Ответить]
Demetr - Апрель 12th, 2011 в 14:25
Вы куда вставляете то? После всех операций, у вас в правой части настройки контактов появится текстовое поле, где никакой (даже включенный) визуальный редактор не работает.
[Ответить]
Demetr - Апрель 12th, 2011 в 14:29
Добавил изображение в статью, чтобы было видно куда надо вставлять ссылку с карты.
[Ответить]
qwerty - Апрель 12th, 2011 в 14:51
Так и делала, но только вставляла код яндекс карт, после сохранения код исчезает, остаются только комментарии к нему.
[Ответить]
Demetr - Апрель 12th, 2011 в 14:53
У Яндекса это по другому делается, а в статье про гугл карты шла речь.
Максим— 03.05.2011 в 14:15 #
Спасибо за информацию все получилось
[Ответить]
Demetr - Май 3rd, 2011 в 18:12
Судя по вашему сайту, ничего не получилось у вас.
[Ответить]
Максим— 03.05.2011 в 18:15 #
Делал на другом сайте http://www.tm-fenix.ru/contacts
[Ответить]
Demetr - Май 3rd, 2011 в 18:16
Тогда извиняюсь. Все хорошо.
[Ответить]
Георгий— 06.06.2011 в 18:59 #
\administrator\components\com_contact\contact_items.xml
вставляю:
В /administrator/index.php?option=com_contact&task=edit&cid[]=1
Получаю
Параметры контакта
There are no Parameters for this item
[Ответить]
Demetr - Июнь 6th, 2011 в 19:02
Код ваш обрезался, непонятно что вы вставляете.
В contact_items.xml
между
парамс
…
/парамс
Нужно вставить код для отображения доп.параметров в админке.
[Ответить]
Demetr - Июнь 6th, 2011 в 19:06
Я вам на мейл напишу сейчас.
[Ответить]
Георгий— 06.06.2011 в 19:07 #
Если можно, напишите мне на почту!, не могу в форму вставлять код, в принципе копирую из окна и добавляю между тегов
[Ответить]
Георгий— 06.06.2011 в 20:21 #
label=»Ссылка на карту»
label=»Ширина карты»
label=»Высота карты»
Удалил русский текст
label=»"
label=»"
label=»" Появилась карта в админке, борюсь далее, чтоб получить её на странице контактов, второй код вставил в созданный путь= templates\a216\html\com_contact\contact\default_form.php
default_form.php Создал вручную, кинул туда код, Карты пока нет! юзую по джумле, смотрю чё не так сделал!
[Ответить]
Demetr - Июнь 6th, 2011 в 20:43
Для редактирования файлов рекомендую Notepad++, там можно выбрать кодировку, в которой будет сохранен файл. Я всегда выбираю UTF-8 (без boom), и с русским текстом все в порядке.
По второй ошибке скорее всего, потому что у вас нет файла default.php в той же папке где и default_form.php
Лучше скачайте беспл.шаблон ja_purity_ii, вот там образцовая папка html, заодно и контент более адекватно будет выводиться.
[Ответить]
Георгий— 06.06.2011 в 23:04 #
Да! Вы совершенно правы, глюк именно шаблона установил joomla шаблон и всё заработало, перепрыгнул на старый и старый стал работать, правда на старом перестала работать форма отправки писем. Спасибо за консультации!!!
[Ответить]
Demetr - Июнь 7th, 2011 в 12:11
Рад был помочь.
[Ответить]
Линда— 14.06.2011 в 15:19 #
Подскажите, пожалуйста, как взять ссылку на карту google? Я когда захожу на google.ru/maps, он мне только город выдает. А как сделать чтобы адрес был?
[Ответить]
Demetr - Июнь 14th, 2011 в 15:25
Заходите по своей ссылке. Вводите нужный адрес (город, улица, дом) потом слева вверху будет кнопка «Ссылка», жмете ее и копируете урл своего адреса.

[Ответить]
Линда— 14.06.2011 в 15:45 #
Он мне пишет. Не удалось найти адрес:
Уфа, Айская, 78
Возможно, вы хотите:
Показать на карте: город Уфа
Найти компании, соответствующие запросу Айская, 78, рядом с: город Уфа
[Ответить]
Demetr - Июнь 14th, 2011 в 15:48
Ну значит гугл не знает вашего адреса. Увы, я тут бессилен.
[Ответить]
Линда— 14.06.2011 в 15:48 #
Все равно спасибо! Эх гугль-кугль:)
[Ответить]
Сергей— 07.03.2012 в 17:39 #
Карта то работает, но все шрифиы в контактах расползлись. Подскажите, в чём проблема ?
[Ответить]
Demetr - Март 7th, 2012 в 17:47
Покажите скрин. Как я могу не глядя подсказать
[Ответить]
vasso— 12.03.2012 в 22:09 #
Вставляем три своих параметра после params:
в какие парамс. там их милион? нужно ли код изменять? дописывать. или так конкретно вставить?
Скрыть
Показать
[Ответить]
Demetr - Март 12th, 2012 в 22:45
В первые попавшиеся вставьте, так эти настройки будут выше в списке.
[Ответить]
Александр— 03.04.2012 в 23:58 #
Подскажите, сейчас я нахожусь на такой стадии. Добавил код с данными ПАРАМ в файл contact_items.xml — в параметрах модуля com_contact появились параметры для управления данными карты.
Но с РНРшным кодом у меня проблемы. Изначально файл \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»>я так и не понял
[Ответить]
Demetr - Апрель 4th, 2012 в 10:31
Код вы вставили правильно. Смотрите какая ситуация. Файл default_form.php перекрывает стандартный файл, который выводит форму контактов. Т.е. делаем мы этого только для нашего шаблона, не трогая системных файлов.
Возьмите файлы default.php, default_form.php из каталога components\com_contact\views\contact\tmpl\. Положите их в свою папку с шаблоном \templates\ваш_шаблон\html\com_contact\contact\
И теперь вставляйте код для карты в файл default_form.php
[Ответить]
Александр - Апрель 4th, 2012 в 15:35
Большое спасибо, все получилось.
Но я все же блок, который указан последним в Вашей статье, никуда не вставлял. Этот блок:
И перед выводом карты ставим условие:
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»>
[Ответить]
fil— 26.04.2012 в 03:54 #
Блин… Спасибо огромное
[Ответить]