Forums / National / Russian / Модули и плагины / CKEditor Как его настраивать ?

<<<12345>>>

Dayver
#46 2023-04-03 10:34
#46306 Kabak:

Добавлено 39 минут спустя:

А можно внести такую настройку в следующий выпуск Cotonti ?    Чтобы можно было выбрать в меню админки как именно выглядит CKEditor в разных разделах сайта ?

По большому счёту если тащить всё подобные изменения в коробку то она быстро превратится в очень сложную систему разобратся в которой будет черезвычайно сложно. А поскольку код движка из-за своей простоты является очень надёжным и быстрым то это путь в другую сторону. Но решать подобные задачи можно и нужно немного другим методом.

 

Опишу свой подход как бы решал эту конкретную задачу я в своих проектах. Допустим есть у вас сайт APC ... и нужно вам делать изменения конкретно под этот проект. Тогда создаём плагин с именем например apc и складываем в него все решения которые руки норовят запихнуть в код движка или стандартных модулей и расширений. Так же и с этой конкретной задачей - добавляете новый параметр в конфигурацию своего плагина apc. Дале используя хуки (конкретно по теме обсуждения подойдёт page.add.tags ) создаёте альтернативный тегу 'PAGEADD_FORM_TEXT' свой , например 'PAGEADD_FORM_TEXT_APC' и используете в шаблоне его вместо стандартного. Тогда обновление движка не спровоцирует ситуацию что все ваши внедрения в системные файлы пропадут, а сама настройка и генерация тега по прежнему будут работать из вашего сайто-плагина так как вы ожидаете.


// в вашем случае вместо
cot::$cfg['page']['minimaxieditor']
// сипользуйте конфигурацию из плагина
cot::$cfg['plugin']['apc']['minimaxieditor']

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

При таком подходе и движок не загромождается решениями которые возможно нужны будут только вам и процес обновления будет доступен в ваших проектах.

Pavlo Tkachenko aka Dayver

Dit bericht is bewerkt door Dayver (2023-04-03 10:44, 1 jaar ago)
Kabak
#47 2023-04-03 11:10

А чем утяжетит работу движка встроенная в админку настройка для поставляемго в базовоё версии CKEditor ?   

По-моему,  писать плагин из-за каждого тумблера для админки - не выход, а как раз утяженение элементарных и удобных вещей. ( я просто высказываю мои мысли вслух. Это никого ни к чему не обязывает ) 

 

Главное, что вы рассказали мне где что искать и менять.  Буду решать на моё усмотрение...

Есть ещё проще вариант - зайти в config.js от CKEditor и заменить все меню на те, которые хочешь видеть в любом разделе сайта... всего и делов-то. И плагин писать не нужно.

Dayver
#48 2023-04-03 11:32
#46322 Kabak:

А чем утяжетит работу движка встроенная в админку настройка для поставляемго в базовоё версии CKEditor ?   

Конкретно эта доработка никак. Я в целом говорю что хотелок много может поступать и решение не каждой бывает простым. Я высказал общую концепцию почему движок до этого времени дожил таким шустрым и надёжным.

#46322 Kabak:

По-моему,  писать плагин из-за каждого тумблера для админки - не выход, а как раз утяженение элементарных и удобных вещей. ( я просто высказываю мои мысли вслух. Это никого ни к чему не обязывает ) 

Так идею я как раз и высказал что не под каждый тумблер свой плагин, а один кастомный плагин под все не стандартные ... это немного по другому уже воспринимается.

Pavlo Tkachenko aka Dayver
Kabak
#49 2023-08-30 11:11

Может кто знает как получить доступ к элементу code от CKEditor .   Я хочу подсвечивать или где-то выводить имя языка программирования на котором примеры в блоках code  ?

 

Можно это сделать во время генерации страницы - генерить какой-то класс для конкретного блока CKEditor code или какую-нибудь иную метку, чтобы в CSS это использовать и отображать ?

Например

 

CKEditor для блоков кода генерит 

<pre class="brush:cpp;">
<pre class="brush:php;">

 

без JS как-то можно обойтись ? 


Dit bericht is bewerkt door Kabak (2023-08-30 11:37, 7 maanden ago)
Alex300 Online
#50 2023-08-30 16:08

как вариант серез CSS создав правила для всех классов brush:*;

Если используется SyntaxHighlighter то он генерит такие дивы: <div id="highlighter_288027" class="syntaxhighlighter  php">...</div>. Принцип тот-же. Но на мой взгляд для того чтобы получить надпись с названием языка - проще использовать JS.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/

Dit bericht is bewerkt door Alex300 (2023-08-30 16:14, 7 maanden ago)
Kort
#51 2023-08-30 17:48
#47045 Alex300:

как вариант серез CSS создав правила для всех классов brush:*;

Если используется SyntaxHighlighter то он генерит такие дивы: <div id="highlighter_288027" class="syntaxhighlighter  php">...</div>. Принцип тот-же. Но на мой взгляд для того чтобы получить надпись с названием языка - проще использовать JS.

А почему не CSS:

div.syntaxhighlighter.php        { background: #eee; position: relative; }
div.syntaxhighlighter.php:before { content: 'PHP'; background: #ddd; position: absolute; top: 0; left: 0; }

и далее по тексту?

SED.by - создание сайтов, разработка плагинов и тем для Котонти

Dit bericht is bewerkt door Kort (2023-08-30 17:54, 7 maanden ago)
Kabak
#52 2023-08-30 18:41
Да, просто добавил в CSS
div.syntaxhighlighter.php:before { content: 'PHP'; background: #f70a0a;
border :#f70a0a solid 1px; 
  border-radius : 3px;
  position: absolute;
  top: 0px; 
  left: 55px;  }

div.syntaxhighlighter.cpp:before { content: 'CPP'; background: #0285ff; 
  border :#0285ff solid 1px; 
  border-radius : 3px;
  position: absolute; 
  top: 0px; 
  left: 55px; }

 

 

Благодарю за помощь. Осталось красиво сделать.

Добавлено 6 дней спустя:

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


Dit bericht is bewerkt door Kabak (2023-09-06 08:51, 7 maanden ago)
Kort
#53 2023-09-06 12:09
div.syntaxhighlighter               { position: relative; }
  div.syntaxhighlighter:before      { color: @white; padding: 0 .5rem; background: @black; position: absolute; top: 0; left: 0; z-index: 1; }
  div.syntaxhighlighter.php:before	{ content: 'PHP'; }
  div.syntaxhighlighter.xml:before	{ content: 'XML'; }

С такими стилями у меня работает в Mozilla, Chrome и Edge и сразу и после перезагрузки страницы. Посмотри что в консоли, для очистки совести отключи кэш Cotonti и почисти кэш браузера.

Если на странице эти стили не прогрузились, посмотри в отладчике как и где загрузился css-файл с ними, на месте ли стили div'а.

SED.by - создание сайтов, разработка плагинов и тем для Котонти

Dit bericht is bewerkt door Kort (2023-09-06 12:53, 7 maanden ago)
Alex300 Online
#54 2023-09-06 14:04

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

Отладчик страницы отключает кеш браузера. Возможно браузер закешировал старую версию CSS-ки

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Kabak
#55 2023-09-06 15:23

Похоже дело было в кеше браузера.  При отладке кеш браузера у меня отключается

Kort
#56 2023-09-15 05:57
#47058 Kort:
div.syntaxhighlighter               { position: relative; }
  div.syntaxhighlighter:before      { color: @white; padding: 0 .5rem; background: @black; position: absolute; top: 0; left: 0; z-index: 1; }
  div.syntaxhighlighter.php:before	{ content: 'PHP'; }
  div.syntaxhighlighter.xml:before	{ content: 'XML'; }

С такими стилями у меня работает в Mozilla, Chrome и Edge и сразу и после перезагрузки страницы. Посмотри что в консоли, для очистки совести отключи кэш Cotonti и почисти кэш браузера.

Если на странице эти стили не прогрузились, посмотри в отладчике как и где загрузился css-файл с ними, на месте ли стили div'а.

Если подумать, то правильнее было бы так:

div:has(> div.syntaxhighlighter)            { position: relative; }
div:has(> div.syntaxhighlighter):before     { position: absolute; top: 0; right: 0; z-index: 1; }
div:has(> div.syntaxhighlighter.css):before { content: 'CSS/LESS'; }
div:has(> div.syntaxhighlighter.php):before { content: 'PHP'; }
div:has(> div.syntaxhighlighter.xml):before { content: 'XML'; }

Псевдокласс :before() должен применяться для непосредственного родительского элемента .syntaxhighlighter, иначе при горизонтальной прокрутке "лэйба" будет тоже скролиться. Но в Mozilla работать не будет -- псевдокласс :has() в нем пока что не реализован. В остальных браузерах все ок.

P.S. Или этот самый безымянный родительский div должен перестать быть безымянным.

SED.by - создание сайтов, разработка плагинов и тем для Котонти

Dit bericht is bewerkt door Kort (2023-09-15 06:31, 7 maanden ago)
Kabak
#57 2023-09-27 12:46
#46319 Dayver:
#46306 Kabak:

Добавлено 39 минут спустя:

А можно внести такую настройку в следующий выпуск Cotonti ?    Чтобы можно было выбрать в меню админки как именно выглядит CKEditor в разных разделах сайта ?

По большому счёту если тащить всё подобные изменения в коробку то она быстро превратится в очень сложную систему разобратся в которой будет черезвычайно сложно. А поскольку код движка из-за своей простоты является очень надёжным и быстрым то это путь в другую сторону. Но решать подобные задачи можно и нужно немного другим методом.

 

Опишу свой подход как бы решал эту конкретную задачу я в своих проектах. Допустим есть у вас сайт APC ... и нужно вам делать изменения конкретно под этот проект. Тогда создаём плагин с именем например apc и складываем в него все решения которые руки норовят запихнуть в код движка или стандартных модулей и расширений. Так же и с этой конкретной задачей - добавляете новый параметр в конфигурацию своего плагина apc. Дале используя хуки (конкретно по теме обсуждения подойдёт page.add.tags ) создаёте альтернативный тегу 'PAGEADD_FORM_TEXT' свой , например 'PAGEADD_FORM_TEXT_APC' и используете в шаблоне его вместо стандартного. Тогда обновление движка не спровоцирует ситуацию что все ваши внедрения в системные файлы пропадут, а сама настройка и генерация тега по прежнему будут работать из вашего сайто-плагина так как вы ожидаете.


// в вашем случае вместо
cot::$cfg['page']['minimaxieditor']
// сипользуйте конфигурацию из плагина
cot::$cfg['plugin']['apc']['minimaxieditor']

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

При таком подходе и движок не загромождается решениями которые возможно нужны будут только вам и процес обновления будет доступен в ваших проектах.

1) С какими характеристиками нужно создавать такой плагин ?    hook global ?

2) Как именно следует переопределять переменные настрооек в своём плагине ?

где почитать ?

Kort
#58 2023-09-27 13:11
  1. Можно и global, но если речь только о локациях добавления и правки страницы, то это Hooks=page.add.tags, page.edit.tags
  2. https://www.cotonti.com/ru/docs/ext/extensions/configvalues
SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kabak
#59 2023-09-27 16:24

Я обновілся до 0.9.24beta и слетели настройки или какие-то моменты которые я прописывал прямо в движке - в php или .js от плагінов.  Безусловно решение от Dayver очень подойдёт хоятбы для того что можно запихнуть в cfg.

Kort
#60 2023-09-27 17:40

Ну это вряд ли Дайвер придумал. Я думаю, все так делают -- это ж логично.

SED.by - создание сайтов, разработка плагинов и тем для Котонти

<<<12345>>>