DHTML Menu и Drupal 7

Аватар пользователя trololoo trololoo 22 февраля 2011 в 15:18

Добрый день!
Решил поставить DHTML Menu 7.x-1.0-beta1 на drupal 7 и столкнулся с тем, что некоторые функции модуля не работают. К примеру в Static navigation при выборе Expand on Bullet (разворачивать при нажатии на якорь #) перестают работать некоторые скрипты на сайте и CKeditor, в Other effects не выбирается пункт Remember which items were expanded on the last page (Помнить какие пункты были расширены на последней странице), а при выбранном Expand only the currently active path (Развернуть только активный путь) этот самый активный путь не разворачивается.
И всё это происходит на чистом друпале, в который ещё не вносились изменения, т.е. дело исключительно в самом модуле.
Я так понимаю он просто несовместим с последней версией drupal, можно ли что-нибудь с этим сделать и есть ли достойные альтернативы? Подскажите пожалуйста.

Комментарии

Аватар пользователя vitg vitg 22 февраля 2011 в 15:48

Там просто жесть. Один из вариантов меню включал - все филдсеты переставали открываться на сайте.

Аватар пользователя trololoo trololoo 22 февраля 2011 в 21:43

"<a href="mailto:shamaner@drupal.org">shamaner@drupal.org</a>" wrote:
все пашет!!!

Как вы этого добились? Какая у вас версия drupal и модуля? Какая версия jquery? В БД таблица называется block или blocks?

Аватар пользователя trololoo trololoo 23 февраля 2011 в 2:43

Написал в bug reports на странице модуля, надеюсь пофиксят когда-нибудь. И судя по всему подобные проблемы далеко ни у меня одного и vitg, значит действительно модуль ещё сыроват.

Аватар пользователя trololoo trololoo 24 февраля 2011 в 13:35

"iHappy" wrote:
Вам что слово beta ничего не говорит ;)

Бета вам не альфа, должно более менее стабильно работать, а тут пользоваться совсем невозможно, жаль. Ещё раз повторюсь: есть ли альтернативы для друпал 7? JQuery Menu и YUI Menu совсем затухли, проекты забросили, а DHTML Menu пофиксят нескоро, если вообще пофиксят.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 13 апреля 2011 в 12:48

Всем привет. Скачал последнюю стабильную (а заодно и последнюю вообще) версию DHTML, все равно режим "Expand on Bullet" затирает все ссылки филдсетов. Кто-нибудь смог решить эту проблему?

Добавлено:
Вот отличный пример меню: content-management-systems.info, и вроде бы в коде есть ссылки на dhtml, но как им это удалось?

Аватар пользователя trololoo trololoo 14 апреля 2011 в 3:24

"vaplas" wrote:
Всем привет. Скачал последнюю стабильную (а заодно и последнюю вообще) версию DHTML, все равно режим "Expand on Bullet" затирает все ссылки филдсетов. Кто-нибудь смог решить эту проблему?

Как видишь никто внятного ответа так и не дал, потому как у кого-то работает, а у кого-то нет, поэтому в то время когда я с ним ковырялся создал Issue на странице модуля, автор модуля говорит что с Expand on Bullet у него всё путём, а остальные мелочи пофиксил. В итоге я просто поставил superfish, уж слишком много хлопот с dhtml menu натерпелся. Как вариант относительно источника проблемы, если у тебя стоит модуль JQuery Update, то удаляй его, он вызывает ряд проблем на всём сайте, других предположений не имею.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 14 апреля 2011 в 10:02

trololoo, спасибо за отклик.
JQuery Update - не стоит. Но вот когда отключил Overlay - все заработало!)
Посмотрел на скриншоты superfish - это только выпадающее меню? Просто хочется именно чтоб с "пульками" было).
Кстати, нашел неплохой скрипт на JQuery (http://jquery.bassistance.de/treeview/demo/), но пока еще попытаю удачу с dhtml, все равно Overlay меня не особо штырил (если, конечно, он ничего кроме серого фона админки не делает)

ЗЫ
2 shamaner@drupal.org: что пашет?
Сам по себе DHTML пашет, это да. Проблема в том, что в режиме с Bullets не пашут филдсеты в админке (т.е. их ссылки становятся неактивными (или вообще в текст превращаются, не знаю) и поэтому нельзя развернуть).
Если установлен модуль CKEditor - пропадает редактор для материала. В WYSIWYG редактор остается, но филдсеты не работают в любом случае

Аватар пользователя trololoo trololoo 14 апреля 2011 в 19:41

"vaplas" wrote:
Посмотрел на скриншоты superfish - это только выпадающее меню? Просто хочется именно чтоб с "пульками" было).

Да, это обычное выпадающее многоуровневое JQuery-меню, пулек в нём нет)

"<a href="mailto:shamaner@drupal.org">shamaner@drupal.org</a>" wrote:
пашет именно так ка ему и положено- разворачивает и сворачивает.

Превосходно что у вас всё работает, вам повезло, но к сожалению многие не такие счастливцы. О глючности модуля можно судить по количеству отчётов об ошибках, а их более двухсот, не малая часть из них — баги связанные с совместимостью модулей, тобишь работает модуль только в особых условиях, коие у вас видимо и созданы.
Удивительного тут ничего нет, название 7.x-1.0-beta1 говорит само за себя, не предполагая стабильной работы.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 4 июля 2011 в 2:14

Нарвался на такую проблему:
Если dhtml в режиме с пульками ("Expand on Bullet") то перестает работать IMCE (по крайней мере из CKEditor-a). При этом ничего кроме CKEditor, IMCE, DHTML к стандартной сборке 7.4 не устанавливал.

Под словами "перестает работать" скрывается такой баг: после выбора иконки "изображения" и нажатия на кнопку "Посмотреть на сервере" - появляется окно для выбора изображений, но сами изображения неактивны, а верхнее меню с кнопками для загрузки и т.п. - вообще не загружается.
Вот тут было предложено решение: http://drupal.org/node/1093772

В файле dhtml_menu.js заменить
$(".menu li").css("margin-left")
на
($('.menu li').css('margin-left') || '0')

но при этом перестает работать и режим "Expand on Bullet"

Штука в том, что срабатывает условие:
if (settings.nav == 'bullet' && !rtl)
но потом выскакивает ошибка на строчке
var shift = '-' + (Math.ceil(($('.menu li').css('margin-left').replace('px', ''))) + 16) + 'px';

потому что нет ($('.menu li').css('margin-left')

Добавив проверку, вроде бы удалось решить проблему. Возможно из-за неё могут возникнуть сбои и в других местах, так что вот, может кому пригодиться. Примерно 174 строка файла \sites\all\modules\dhtml_menu\dhtml_menu.js, заменить:

if (settings.nav == 'bullet' && !rtl) {
               
      // Shift overlay to the left by the width of the icon and the distance between icon and text.
      var shift = '-' + (Math.ceil(($('.menu li').css('margin-left').replace('px', ''))) + 16) + 'px';   
      // Shift the overlay using a negative left-hand offset, and the text using a negative right-hand margin.
      $('.dhtml-menu-icon').css('left', shift).css('margin-right', shift);
    }

на

if (settings.nav == 'bullet' && !rtl) {
                if($('.menu li').css('margin-left')!=undefined){
               
      // Shift overlay to the left by the width of the icon and the distance between icon and text.
      var shift = '-' + (Math.ceil(($('.menu li').css('margin-left').replace('px', ''))) + 16) + 'px';   
      // Shift the overlay using a negative left-hand offset, and the text using a negative right-hand margin.
      $('.dhtml-menu-icon').css('left', shift).css('margin-right', shift);
          }
    }
Аватар пользователя Olegnim Olegnim 25 сентября 2011 в 23:36

Забил бы на "пульки" свои, я тоже с дуру настройки поменял, два дня ломал голову почему не работает, потом решил настройки изменить в самом dhtml menu... и о чудо, все заработало, к черту пульки и все что глючит и все ок
Видимо жил какое-то время на кэше браузера не замечал Smile

Аватар пользователя yagoo yagoo 25 января 2012 в 13:04

После того как установил и понял, что у меня никак работать не хочет, я плагин удалил, но в меню остался дублирующий пункт

Подскажите, как избавиться?

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 25 января 2012 в 22:51

"Olegnim" wrote:
Забил бы на "пульки" свои, я тоже с дуру настройки поменял, два дня ломал голову почему не работает, потом решил настройки изменить в самом dhtml menu... и о чудо, все заработало, к черту пульки и все что глючит и все ок
Видимо жил какое-то время на кэше браузера не замечал :)

Но кстати, через какое-то время после публикации моего последнего поста практически идентичный патч был занесен в dev версию модуля, которую и рекомендую использовать). Хотя не знаю, dhtml что-то стареет.

"yagoo" wrote:
Подскажите, как избавиться?

Удалил в плане отключил, или зашел после этого во вкладку удаление и от-туда удалил. Если не удалял - удали. Может быть нужна чистка кэша.

Аватар пользователя yagoo yagoo 26 января 2012 в 6:56

"vaplas" wrote:
Удалил в плане отключил, или зашел после этого во вкладку удаление и от-туда удалил. Если не удалял - удали. Может быть нужна чистка кэша.

Удалил путем деинсталляции через админку Drupal.

Аватар пользователя ArmRus ArmRus 18 июня 2012 в 17:50

Сегодня срочно нужно было реализовать функционал Expand on Bullet DHTML menu и не было времени писать скрипт. Нашел временное решение данной проблемы. В моем случае DHTML меню не было нужно включать в админке. Я просто отключил JS файлы при условии что загружена тема админки(в моем случае Seven). Для этого в файле dhtml_menu.module сделал следующее изменение
строка 26

<?php
  
function dhtml_menu_init() {
  
module_load_include('inc''dhtml_menu''dhtml_menu.theme');
  
drupal_add_css(drupal_get_path('module''dhtml_menu') . '/dhtml_menu.css');
  
drupal_add_js(drupal_get_path('module''dhtml_menu') . '/dhtml_menu.js');
  
drupal_add_js(array('dhtmlMenu' => variable_get('dhtml_menu_settings')), 'setting');
}
?>

Изменил на

<?php
 
function dhtml_menu_init() {
  
module_load_include('inc''dhtml_menu''dhtml_menu.theme');
  
drupal_add_css(drupal_get_path('module''dhtml_menu') . '/dhtml_menu.css');
  global 
$theme
  if(
$theme !='seven'){ 
    
drupal_add_js(drupal_get_path('module''dhtml_menu') . '/dhtml_menu.js');
    
drupal_add_js(array('dhtmlMenu' => variable_get('dhtml_menu_settings')), 'setting');
  }
}
?>

Знаю что решение не из лучших, но теперь работает все норм) а в идеале просто напишите свой скрипт, который будет выполнять нужный функционал.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 18 июня 2012 в 18:13

т.е. описание и решение проблемы в моем посте, связанное с отсутствием проверки никого не устраивает ?) (Никого, кроме автора этого модуля, который в dev версии уже исправил этот глюк, и именно так).

Аватар пользователя ArmRus ArmRus 19 июня 2012 в 22:38

"vaplas" wrote:
т.е. описание и решение проблемы в моем посте, связанное с отсутствием проверки никого не устраивает ?) (Никого, кроме автора этого модуля, который в dev версии уже исправил этот глюк, и именно так).

Меня вполне устраивает, но просто времени не было.. пришлось на скорую руку делать) вот и решил выложить...
А так на днях пропатчу модуль. или сам напишу скрипт...