Появилась задача сделать так, чтобы в JCE при открытии сразу появлялся некий текст, типа болванки, чтобы пользователь мог не заморачиваясь только заполнить поля. Скажу сразу — задачи сваять форму и туда вносить какие-то данные не было, нужно было реализовать это именно на JCE при создании материала.
Итак, в руках Joomla 2.5, JCE 2.2. Вперед.
Пожалуй, стоит начать с того, что для JCE есть платный плагин — Менеджер шаблонов, он же, TemplateManager. Мне он не подошел по одной единственной причине — нельзя просто так взять и пустить кого попало в папку, чтобы он там что-то себе выбирал. Да и пользователю не надо лишний раз тыкать, искать какой-то шаблон и представлять, для чего он это делает. Пользователь у нас должен быть спокоен как рыба об лед.
Ну, приступим.
Сам плагин (JCE) подключается из файла /plugins/editors/jce/jce.php — там вся его суть. Открываем, видим функцию onDisplay где-то на строке 109.
Вот она-то нам и нужна. Именно тут собирается контейнер для нашего редактора. Ниже, примерно в строке 126 мы и увидим, как это делается:
$editor = '<label for="' . $id . '" style="display:none;" aria-visible="false">' . $id . '_textarea</label><textarea id="' . $id . '" name="' . $name . '" cols="' . $col . '" rows="' . $row . '" style="width:' . $width . ';height:' . $height . ';" wrap="off">' . $content . '</textarea>';
то есть, собираем textarea и пишем туда текст из переменной $content
Собственно, дальше — дело техники. Перед этой строкой пишем что-то типа:
if ( empty($content) ) $content = " <b>Label:</b> <br /> <b>Format:</b> <br /> <b>Country:</b> <br /> <b>Released:</b> <br /> <b>Genre:</b> <br /> <b>Style:</b> <br /> <b>Url:</b> <br /> ";
Спрашивается, зачем проверка? Проверяем — есть ли вообще что-то в этой переменной. Мы же не хотим заменить текст при редактировании, правильно? Соответственно, когда мы создаем новый документ — переменная пуста, мы можем указать все, что угодно и оно появится в редакторе.
Собственно, все — вместо моего текста с Format, Country и прочим добром — пишем свой HTML код и всех делов.
Кстати, если у кого-то есть более изящное решение — поделитесь плиз, буду очень признателен 🙂