Модуль поиска Teleport. Как добиться появления по ссылке?

Главные вкладки

Аватар пользователя digital_sword digital_sword 18 июля 2008 в 22:13

Нужен была хороший и симпатичный поиск по сайту (для 6го друпала). Перебрал все модули по поиску на drupal.org, подошел под эти критерии только Teleport. Но в чем проблема: эта форма появляется только при нажатии на комбинацию клавиш (по умолчанию ctrl+T). Можно ли добиться появления при щелчке на ссылке? (Может там java script какой-то обработается, который заменит это нажатие и т.п.). А может это уже заложено? Кто-то ставил этот модуль?

Комментарии

Аватар пользователя gorr gorr 19 июля 2008 в 17:24

Думаю надо найти в модуле (либо в яваскрипте) место где приаттачивается реакция на событие onkeyup и заменить на нужное событие onclick или onfocus

Аватар пользователя digital_sword digital_sword 21 июля 2008 в 18:48

Сохранил страницу в html.
Вот кусок нужного кода:

<script type="text/javascript" src="1_files/teleport.js"></script>
<script type="text/javascript">jQuery.extend(Drupal.settings, { "basePath": "/", "lightbox2": { "rtl": "0",  } });</script>
<script type="text/javascript">jQuery.extend(Drupal.settings, { "teleport": { "form": "\x3cform action=\"/teleport/submit\"      /\x3e\n\n\x3c/div\x3e\x3c/form\x3e\n", "hotkey": "T" } });</script>
<div style="display: none;" id="teleport"><form action="/teleport/submit" id="teleport-form">
<div><fieldset><h2>Teleport</h2>
</div>

Вы говорите, что должна работать конструкция:

 <a onclik="эта_функция(); retirn false;">форма</a>

Что за функцию мне в ссылке писать?

Аватар пользователя gorr gorr 23 июля 2008 в 15:13

jQuery.extend(Drupal.settings, { "teleport": { "form": "\x3cform action=\"/teleport/submit\" /\x3e\n\n\x3c/div\x3e\x3c/form\x3e\n", "hotkey": "T" } });
надо заменить на такой:
jQuery.extend(Drupal.settings, { "teleport": { "form": "\x3cform action=\"/teleport/submit\" /\x3e\n\n\x3c/div\x3e\x3c/form\x3e\n", "focus"} });
Или нечто наподобие( не помню как событие onfocus именуется в jquery), а еще лучше вставить в форму с помощью form_alter ссылочку в виде рисуночка рядом с полем и модифицировать этот скриптец слегка, чтобы он работал при клике на нее.

Аватар пользователя gorr gorr 23 июля 2008 в 17:25
<a href="#" onclick="javascript: Drupal.teleport.toggle();">help button</a>

И менять ничего не надо.
можно даже вот так попробовать, отпишитесь..
Или может лучше вот так:

<a href="#" onclick="javascript: Drupal.teleport.toggle(); return false;">help button</a>
Аватар пользователя gorr gorr 23 июля 2008 в 17:52

Сорри, я там с малой буквы написал телепорт, попробуйте так:

<a href="#" onclick="javascript: Drupal.Teleport.toggle(); return false;">help button</a>
Аватар пользователя gorr gorr 24 июля 2008 в 0:33

Вобщем покопался в скрипте и нашел почему так происходит. Если хотите подправить, то откройте файл teleport.js, найдите там 63 строку, она выглядит так:

  if (!Drupal.Teleport.checkParents(tg, 'teleport') && !Drupal.Teleport.checkParents(tg, 'teleport-button')) {

и замените ее на такую:

  if (!Drupal.Teleport.checkParents(tg, 'teleport') && !Drupal.Teleport.checkParents(tg, 'teleport-button') && !(tg.id=='teleport-link')) {

Все, теперь вставляете в хтмл страничку почти то же, что и раньше, но с небольшим отличием:

  <a href="#" id="teleport-link" onclick="javascript: Drupal.Teleport.toggle(); return false;">help button</a>

Должно работать.

Аватар пользователя digital_sword digital_sword 24 июля 2008 в 8:05

Изменил файл и ссылку. Все то же. Появляется и тут же исчезает. Этот модуль что использует? (чтоб мне самому порыть). jQuery? Ajax? toggle - функция js, телепорт на нем?

Аватар пользователя gorr gorr 24 июля 2008 в 12:25

Нет, это функция именно этого объекта, так что ее не найдете(хотя это по-английски типа переключатель-часто используется для таких целей).

Аватар пользователя gorr gorr 24 июля 2008 в 13:05

Воссоздал у себя то, что написал- все работает. Скорее всего Ваш браузер закешировал яваскрипт- обновите страничку.

Аватар пользователя digital_sword digital_sword 24 июля 2008 в 14:20

Да, действительно работает! Спасибо!
Страницу раньше много раз обновлял, сейчас удалил все личные данные, заработало, видимо что-то там.