[Решено] как добавить чекбоксы к select

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

Комментарии

Аватар пользователя Geek777 Geek777 2 июня 2013 в 16:24

CSoft wrote:
"Geek777" wrote:
пробовал это https://code.google.com/p/dropdown-check-list/ что то не вяжется с webform (((

Использую данный плагин в своих проектах - никаких проблем не ощущаю.

пожалуйста дайте направление, что, где и как.

я в html.tpl прописал пути к js и css
в скрипте изменил id на селектовкий id

может что то еще ?

Аватар пользователя CSoft CSoft 2 июня 2013 в 17:29

Берём пример с офсайта:

$("#select_id").dropdownchecklist();

В своём js файле оборачиваем в

(function ($) {
  // тут ваш код
}(jQuery));

Меняем селектор #select_id на свой. Подключаем файл к сайту.

Аватар пользователя CSoft CSoft 2 июня 2013 в 18:37

"Geek777" wrote:
подключил через инфо

Строкой выше туда же прописать сам плагин. Расположить его в папке темы.

Аватар пользователя Geek777 Geek777 2 июня 2013 в 18:39

я прописал так

scripts[] = js/jquery-1.6.1.min.js
scripts[] = js/jquery-ui-1.8.13.custom.min.js
scripts[] = js/ui.dropdownchecklist-1.4-min.js
scripts[] = js/ui.dropdownchecklist.js
scripts[] = js/myfunct.js

Аватар пользователя CSoft CSoft 2 июня 2013 в 19:01

"Geek777" wrote:
scripts[] = js/jquery-1.6.1.min.js
scripts[] = js/jquery-ui-1.8.13.custom.min.js

Можно обойтись тем, что есть в ядре, но тогда придётся скачать плагин версии 1.3.

"Geek777" wrote:
scripts[] = js/ui.dropdownchecklist-1.4-min.js
scripts[] = js/ui.dropdownchecklist.js

Зачем 2 раза?

Попробуйте сделать вот так:

scripts[] = /misc/ui/jquery.ui.core.min.js
scripts[] = /misc/ui/jquery.ui.widget.min.js
scripts[] = js/ui.dropdownchecklist-1.3-min.js
scripts[] = js/myfunct.js

Если всё ок, то можно будет заняться стилями.

P. S. В идеале это всё делается иначе: нужно создавать свой модуль и в hook_library прописывать плагин, указывать его зависимость от ui.widget... А потом уже подключать к нужным страницам через drupal_add_library(). Я просто думаю, что Вы не сможете это всё сделать пока, поэтому пойдём путём выше.

Аватар пользователя CSoft CSoft 2 июня 2013 в 19:08

Кому интересен вариант со своим модулем - вот он:

<?php
/**
 * Implements hook_library().
 */
function MODULE-NAME_library() {
  
$libraries['ui.dropdownchecklist'] = array(
    
'title' => 'Dropdown Check List',
    
'website' => 'http://code.google.com/p/dropdown-check-list/',
    
'version' => '1.4',
    
'js' => array(
      
drupal_get_path('module''MODULE-NAME') . '/ui.dropdownchecklist-1.4-min.js' => array(),
    ),
    
'dependencies' => array(
      array(
'system''ui.widget'),
    ),
  );
  return 
$libraries;
}
?>

Использование:

<?php
drupal_add_library
('MODULE-NAME''ui.dropdownchecklist');
?>

И, соответственно, для версии 1.4 нужен jquery повыше - ставим модуль jquery update и выбираем в нём версию минимум 1.7.

Аватар пользователя CSoft CSoft 2 июня 2013 в 19:52

Блин, принудительно в начало пути добавляется путь к теме.

Ок, тогда в теме создавайте файл template.php и пропишите там, так будет даже лучше:

<?php
function ИМЯ_ТЕМЫ_preprocess_node(&$variables) {
  if (
$variables['type'] == 'webform') {
    
drupal_add_library('system''ui.widget');
    
drupal_add_js(drupal_get_path('theme''ИМЯ_ТЕМЫ') . '/js/ui.dropdownchecklist-1.3-min.js');
    
drupal_add_js(drupal_get_path('theme''ИМЯ_ТЕМЫ') . '/js/myfunct.js');
  }
}
?>

Из info-файла наши строчки удаляем. Кэш очищаем.

Аватар пользователя CSoft CSoft 2 июня 2013 в 20:06

"Geek777" wrote:
в исходном коде путь валидный

Гм, у меня в чистом друпале это не так.

В общем, всё равно используйте совет выше, так правильнее - файлы будут подключаться только для нод с веб-формой. Изначально бы так советовал, но не хотелось мучить Вас Smile

Аватар пользователя CSoft CSoft 2 июня 2013 в 20:07

"Geek777" wrote:
только почему то в конце .js вот это появляется ?mnrwfm

Это нормально. Чтобы при очистке кэша браузер внёс в свой кэш файл, который типа станет с новым именем.

Аватар пользователя Geek777 Geek777 2 июня 2013 в 20:07

кстати у меня форма в colorbox-е выводиться )))

я прописал в template.php моей субтемы код написанный вами выше, поменял название на название субтемы, итог белый лист )

Аватар пользователя CSoft CSoft 2 июня 2013 в 20:11

Тогда if ($variables['type'] == 'webform') { нужно убирать. А если вызывается это всё не из ноды - ещё и функцию нужно менять на preprocess_page.

Прописанный Вами код процитируйте, плиз.

Аватар пользователя Geek777 Geek777 2 июня 2013 в 20:12


<?php
function theme_preprocess_node(&$variables) {
if ($variables['type'] == 'webform') {
drupal_add_library('system', 'ui.widget');
drupal_add_js(drupal_get_path('theme', 'theme') . '/js/ui.dropdownchecklist-1.3-min.js');
drupal_add_js(drupal_get_path('theme', 'theme') . '/js/myfunct.js');
}
}
?>

Аватар пользователя CSoft CSoft 2 июня 2013 в 20:43

Не нравится мне название Вашей темы... Вдруг конфликт какой идёт. Раз белый лист - посмотрите логи сервера - что там за ошибку пишет. Или если какие страницы сайта работают - в журнале есть что-то?

Аватар пользователя CSoft CSoft 4 июня 2013 в 19:48

"CSoft" wrote:
Раз белый лист - посмотрите логи сервера - что там за ошибку пишет. Или если какие страницы сайта работают - в журнале есть что-то?

"Geek777" wrote:
применил другой скрипт, все равно не меняется вид select

Что-то делаете не так.

Аватар пользователя Geek777 Geek777 4 июня 2013 в 20:09

по-моему проблема в инициализации скрипта, т.к и тут файрбаг ругается TypeError: $.widget is not a function

$(document).ready(function(){
$("#edit-submitted-country").multiselect();
});

Аватар пользователя CSoft CSoft 4 июня 2013 в 20:14

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

Третий раз уже прошу, между прочим. Больше не буду просто.

Аватар пользователя Geek777 Geek777 12 июня 2013 в 16:04

а если пойти путем своего модуля, то хватит ли того кода, который вы давали в теме для успешной реализации проблемы?

Аватар пользователя CSoft CSoft 14 июня 2013 в 2:42

Я извиняюсь - забыл добавить, что код должен выполняться, когда DOM готов:

(function ($) {
  $(document).ready(function () {
    $('select').dropdownchecklist();
  });
}(jQuery));

Так работает.

Аватар пользователя ksannaa ksannaa 21 июня 2013 в 17:02

Спасибо за тему !! Все получилось, только скажите, а как его можно сразу открытым сделать, код скрипта смотрю, пока не получается...