Проблемы с установкой FCKEditor под drupal 5.1

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

Аватар пользователя Toologic Toologic 13 февраля 2007 в 12:31

Итак имеем
Druapl 5.1
Fckeditor.module 5.x.1.1
ну и сам fckeditor 2.4

Копируем все куда надо... Wink
Установка прошла успешно.

Начинаем редактировать статью...и бамс
"Ошибка: FCKEditor определение отсутсвует"
далее бамс
" oFCKeditor_edit_body есть NUL или не является объектом ...." -

смотрим дебаггером - видим внесенный скрипт код в тело странички...

var oFCKeditor_edit_body = new FCKeditor( 'edit-body' ); <--- строка с ошибкой
..... и далее много всего....

Изучаем внимательно всю страничку - чего не хватает? правильно не хватает включения fckeditor.js в коем и есть определение FCKeditor как object

Смотрим код модуля.

строка 229 drupal_add_js($module_drupal_path . '/fckeditor/fckeditor.js'); есть...
а в коде странички редактирования этого включения нет!

вАпрос к гуру - почему так?

Коммент практика установки fcke есть и большая - что куда лить и как конфигурить - в курсе. на d4.7.x работает на ура!!

Комментарии

Аватар пользователя Toologic Toologic 13 февраля 2007 в 17:15

Нет! Тема самостоятельно переработанная от Rocket.

Удивляет то, что остальные модули свои .js включают в $head

Переставил FCK 5.x.1.x.dev - тож самое (((

блин как достают эти затыки - время на них уходит тьма.

Мой сайт
-на drupal 4.7 - www.travelweekly.ru
-на drupal 5 - пока не готов.

Аватар пользователя Toologic Toologic 14 февраля 2007 в 0:57

Нда, скажу я вам. Тутта целое эссе вырисоввывается.
Начнем с простого.
1. Долго и пристально разглядывал сгенеренный HTML код странички своего проекта. и все думал чего в нем не хватает. Практически целый день смотрел... потом понял! Вот оно! Ни одной системной библиотеки. Т.е. ни одного *.js файла от drupal нету. только мои - которые сам в page.tpl.php вставлял. А так ках их много - то и не очень то бросалось в глаза отсутствие системных. Стал разбираться - что такое? Ну как еще можно разобраться - "учи матчасть", "читай первоисточник". В качестве учебника марксистско-ленинской философии взял garland. Что вижу- какими новациями полны шаблоны этой темы.
А вот они, прям фактически на первых строках

    <?php print $head ?>
    <?php print $styles ?>
    <?php print $scripts ?>

Интересно думаю. Надо применить у себя... вставляю... не подумайте плохого... в свою тему. И.. как рухнет весь мой dhtml. Просто не сайт, а одна бАльшая ошибка javascript. Дождался таки окончания выскакиваний alert() и глядь в сорсы то свои - а тама красота - css выстроились как на подбор - ровням списочком и ...праильна.. ни одного системного *.js, опять тока мои. Но мои то без jquery не работают. да и drupal.js нужен как ни крути. А нету их.

2. Глубже.
Настроил var_dump($scripts) - Ответ string(0)"" Вот это здорово! Смотрю глубже - а что такое (где такое) формируется. PHPTemplate.engine сообщает мне scripts = drupal_get_js();
drupal_get_js - это такая высокоинтелектуальная функция из common.inc, которая запущенная без параметров сама добавляет в некий массив структурное описание 2-х функций - и далее формирует из него (массива) список формата
путь\js-скрипт обрамленные html-льными
<script type="text/javascript" src=....сюда.... script> и отдает её. В общесистемном случае глобальной переменной scripts

3. Еще глубже.
Туда конечно я не копал, но приблизительное представление для себя сложил. В общем виде происходит это так

- перед тем как отдать страничку (смотрите workflow формирования представления node - вызываются всякие модули. если для их работы нужны какие-то *.js то они их добавляют используя drupal_add_js(). Вобщем пока все проучаствуют в процессе - список набирается достаточный (например при редактировании статьи используя fckeditor)
Потом уже когда происходит фомирование непосредственно index.php - все эти потребные скрипты и вываливаются вызовом
<?php print $scripts ?>

- ну тут druapl явно перемудрил. или не домудрил. для формирования простой первой странички стандартного шаблона думает он -никакие js не нужны. и отдает пустой список. Во всяком случае у меня.

4. Всплываем.
Но моя-то тема сложная. Тама наворочено всего. и Табы, и графические фильтры, и dhtml меню. Мне jquery ай как нужно. Идем к другому первоисточнику - drupal.org
Читаем - для того чтобы использовать пользовательские скрипты добавляйте их в список вызовом
<?php drupal_add_js(path_to_theme().'/js/mootools.js'); ?>
Далее - для того чтобы исключить скрипты из в списка вызывайте
<?php unset($js['module']['misc/upload.js']); ?>

причем откуда взялась этта $js -толком не объясняют. Выясняется - её надо создать сначала пустым вызовом (см. п3)
<?php $js = drupal_add_js(); ?>
потом включить свои скрипты

<?php $js = drupal_add_js(path_to_theme().'/js/mootools.js');
        $js = drupal_add_js(path_to_theme().'/js/jquery-1.1.1.js','core', 'header');
?>

тока потом выключить ненужные (конфликтные)

<?php unset($js['core']['misc/jquery.js']); ?>

ну и под конец вывалить все это безобразие на страницу
<?php print drupal_get_js('header', $js); ?>

Примечание - понятно что $ js - это любая объявленная вами переменная.

Вот - никак иначе.

5. И это еще не все.
Обратили внимание на дополнительные параметры drupal_add_js(.....,'core', 'header'); Тут тоже некоторые уточнения требуются. В Drupal внедрено несколько
.. назовем их.. секций вызовов скриптов - 'header' и 'footer'. т.е. вы можете сами управлять какие скрипты когда будут вызаваться.
Секция header вызывается в шапке страницы, footer через print $closure - конце её.
Есть несколько видов скриптов - внутренние настройки - settings, чистый javascript-код = inline и, наконец, включенный код из сторонних js.файлов

И это еще не все. Js-ки делятся по принадлежности к чему - не нашел слово.
core - Относятся к ядру drupal
module - к устанавливаемым модуляю - фактически плагины
theme - скрипты работающие непосредственоо в шаблонах тем, всякие тама слидеры, драг-дропы, ролл-ап списки и проч dhtml.

В вышеприведенном примере видно что в секции core сначала включается новый jquery-1..x.x., а потом исключается родной jquery.js
Это обнаружено опытным путём. Если после того как вы исключили jquery ис списка вы вызовете любой drupal_add_js - Он автоматом добавит "недостающий" jquery

Узнать где у вас че лежит (включено) можно например так

<!--
<?php print_r($js) ?>
//-->

и посмотреть исходник своей сформированной страницы

Дык о чем это я! Представляте. Все это я разобрал., понял. А не работает у меня тема. (Убъюсь ап стену)
Если руками прописывать мои js работает, а через вывод print drupal_get_js('header', $js); -нет.

Т.е все прописывает правильно. все они видны. Ну не знаю как объяснить... такое ощущение что на странице-то он (drupal) их нарисовал а "пройти" забыл.