[EVO] globalPlaceholders - модуль глобальных плейсхолдеров, tv и настроек.
Всем доброго времени суток.
Мне наконец надоело заниматься заполнением глобальных настроек через базу и разные быстрые решения. Было решено пошустрому собрать модуль + плагин для редактирования статичных данных которые часто раскиданы по чанкам и разным страницам. В общем собрал все в одно место. Настройка может подменять и плейсхолдер и тв. Редактируется удаляется переименуется все из модуля.
Весь код находится на гите. Предложения и вопросы можно тут а можно и в разделе ошибок на гитхабе.
Модуль работает на версиях 5.2 и выше. В остальном я думаю никаких ограничений нет, но я не ручаюсь т.к. не тестил на других сборках.
Что может модуль:
1) создавать новые настройки в базе system_settings с префиксом global_
2) редактировать эти настройки из модуля.
3) рассовывать настройки по разным группам.
4) присваивать настройкам разные типы редактирования (чекбокс, изображение, файл и т.д.). Селекты как обычно поддерживают стандартный вариант заполнения значений (1||2||3 и 1==имя1||2==имя2). В дальнейшем наполнится возможными типами редактирования.
5) естественно возможность удалять настройки с префиксом global_
6) Есть возможность при помощи плагина подменять [* и [+ на значение настройки. (пример есть настройка global_sitePhone, при выставлении параметров подмены будет доступен в качестве [*sitePhone*] и [+sitePhone+]. Если значение является массивом то доступ к нему как к массиву можно получить через [(sitePhone)]). Удобно если нужно перевести старый проект на этот модуль а вычищать и менять все вызовы тв на вызовы настройки нет желания, как мне :)
Планируется добавить поддержку мультитв и множественного изображения.
Что могут плагины
gPHParser:
1) Парсит глобальные настройки с префиксом global_ отчищает их от шелухи и кладет на место уже без префикса.
2) Раскладывает настройки в зависимости от выбранных типов доступности (плейсхолдер — gPH, ТВ — gTV, настройка — по умолчанию всегда)
3) Если включен frontEditor в настройках то оборачивает все текстовые настройки в div для указания что этот текст можно править.
Плагин вызывается по событию onParseDocument, подмена обрабатывается только один раз, при первом проходе парсера. В последующие проходы парсера они доступны уже во всех положенных местах.
gPHFrontEditor:
1) Добавляет скрипты на страницу для активации фронтэдитора.
2) Активирует доступные к редактированию изображения ссылки видео.
3) Сохраняет новые данные после редактирования.
4) Скидывает кеш страниц т.к. редактор виден обычным пользователям. (нужно сделать сброс кеша исключительно данной страницы ибо выходит немного накладно)
Плагин вызывается по событию onWebPageInit, сброс кеша происходит по событию onWebPageComplete.
Немного скриншотов.
Ссылка на видео
Кому интересно можете покопаться на гите)
UPD 10/03
Создавать настройку с пустым именем нельзя.
Группа назначается автоматом если группа не была выбрана и новая не была указана.
Имена настроек транслитируются на английскую раскладку.
Добавлен ричтекст. Ричтекст рендерится на основании дефолтного. Если у вас в настройках выставлено отсутствие ричтекста то будет выводится большая текстареа.
Поправлены небольшие баги. Проведены небольшие доработки кода.
Добавлен префикс в плагин. Теперь можно не перезаписывать существующие плейсхолдеры и тв. По дефолту префикс «g.»
UPD 10/03
Поправил багу с пересохранением значения ричтекста.
Добавил поддержку разделения настроек по табам исходя из группы.
UPD 15/03
Добавлена запись глобальной настройки вида g_[%option_name%] для доступа к настройке без плагина.
Добавлена настройка позиции для группирования настроек.
Поправлены баги с сохранением текста содержащего переносы строк в базу. (Будет еще допиливаться для сохранения переносов т.к. сейчас они просто вытираются)
Добавлен пользовательский шаблон для вывода настройки, в пользовательском шаблоне не выводится имя настройки а только описание.
UPD 27/03
Сделал простенький фронтенд редактор для настроек. Редактор может править тексты (рич, инпуты, текстареа) работать с тегом видео, изображения, ссылки. Т.е. можно менять изображения текста видео ссылки на файлы и видео прям на живую с фронта.
Немного поправил код плагинов и модуля.
Добавил обработку переносов строки для текстареа. Теперь на фронте они как br а в самой текстареа как \r\n.
UPD 30/03
Полностью убран конфиг модуля. Вместо него теперь полноценная страница настройки в модуле.
Поправлены мелкие недочеты с логикой и всякие мелочи типа общей группы.
Добавлен евент OnWebPageComplete в котором скидывается кеш. Сделано для того чтобы веб пользователь не видел скешированную после плагина страницу (потом переделаю во что-то более путное).
Добавлены конфиги в установочные файлы. Теперь модуль и плагины доступны в Extras в качестве одного пакета.
Мне наконец надоело заниматься заполнением глобальных настроек через базу и разные быстрые решения. Было решено пошустрому собрать модуль + плагин для редактирования статичных данных которые часто раскиданы по чанкам и разным страницам. В общем собрал все в одно место. Настройка может подменять и плейсхолдер и тв. Редактируется удаляется переименуется все из модуля.
Весь код находится на гите. Предложения и вопросы можно тут а можно и в разделе ошибок на гитхабе.
Модуль работает на версиях 5.2 и выше. В остальном я думаю никаких ограничений нет, но я не ручаюсь т.к. не тестил на других сборках.
Что может модуль:
1) создавать новые настройки в базе system_settings с префиксом global_
2) редактировать эти настройки из модуля.
3) рассовывать настройки по разным группам.
4) присваивать настройкам разные типы редактирования (чекбокс, изображение, файл и т.д.). Селекты как обычно поддерживают стандартный вариант заполнения значений (1||2||3 и 1==имя1||2==имя2). В дальнейшем наполнится возможными типами редактирования.
5) естественно возможность удалять настройки с префиксом global_
6) Есть возможность при помощи плагина подменять [* и [+ на значение настройки. (пример есть настройка global_sitePhone, при выставлении параметров подмены будет доступен в качестве [*sitePhone*] и [+sitePhone+]. Если значение является массивом то доступ к нему как к массиву можно получить через [(sitePhone)]). Удобно если нужно перевести старый проект на этот модуль а вычищать и менять все вызовы тв на вызовы настройки нет желания, как мне :)
Планируется добавить поддержку мультитв и множественного изображения.
Что могут плагины
gPHParser:
1) Парсит глобальные настройки с префиксом global_ отчищает их от шелухи и кладет на место уже без префикса.
2) Раскладывает настройки в зависимости от выбранных типов доступности (плейсхолдер — gPH, ТВ — gTV, настройка — по умолчанию всегда)
3) Если включен frontEditor в настройках то оборачивает все текстовые настройки в div для указания что этот текст можно править.
Плагин вызывается по событию onParseDocument, подмена обрабатывается только один раз, при первом проходе парсера. В последующие проходы парсера они доступны уже во всех положенных местах.
gPHFrontEditor:
1) Добавляет скрипты на страницу для активации фронтэдитора.
2) Активирует доступные к редактированию изображения ссылки видео.
3) Сохраняет новые данные после редактирования.
4) Скидывает кеш страниц т.к. редактор виден обычным пользователям. (нужно сделать сброс кеша исключительно данной страницы ибо выходит немного накладно)
Плагин вызывается по событию onWebPageInit, сброс кеша происходит по событию onWebPageComplete.
Немного скриншотов.
Ссылка на видео
Кому интересно можете покопаться на гите)
UPD 10/03
Создавать настройку с пустым именем нельзя.
Группа назначается автоматом если группа не была выбрана и новая не была указана.
Имена настроек транслитируются на английскую раскладку.
Добавлен ричтекст. Ричтекст рендерится на основании дефолтного. Если у вас в настройках выставлено отсутствие ричтекста то будет выводится большая текстареа.
Поправлены небольшие баги. Проведены небольшие доработки кода.
Добавлен префикс в плагин. Теперь можно не перезаписывать существующие плейсхолдеры и тв. По дефолту префикс «g.»
UPD 10/03
Поправил багу с пересохранением значения ричтекста.
Добавил поддержку разделения настроек по табам исходя из группы.
UPD 15/03
Добавлена запись глобальной настройки вида g_[%option_name%] для доступа к настройке без плагина.
Добавлена настройка позиции для группирования настроек.
Поправлены баги с сохранением текста содержащего переносы строк в базу. (Будет еще допиливаться для сохранения переносов т.к. сейчас они просто вытираются)
Добавлен пользовательский шаблон для вывода настройки, в пользовательском шаблоне не выводится имя настройки а только описание.
UPD 27/03
Сделал простенький фронтенд редактор для настроек. Редактор может править тексты (рич, инпуты, текстареа) работать с тегом видео, изображения, ссылки. Т.е. можно менять изображения текста видео ссылки на файлы и видео прям на живую с фронта.
Немного поправил код плагинов и модуля.
Добавил обработку переносов строки для текстареа. Теперь на фронте они как br а в самой текстареа как \r\n.
UPD 30/03
Полностью убран конфиг модуля. Вместо него теперь полноценная страница настройки в модуле.
Поправлены мелкие недочеты с логикой и всякие мелочи типа общей группы.
Добавлен евент OnWebPageComplete в котором скидывается кеш. Сделано для того чтобы веб пользователь не видел скешированную после плагина страницу (потом переделаю во что-то более путное).
Добавлены конфиги в установочные файлы. Теперь модуль и плагины доступны в Extras в качестве одного пакета.
56 комментариев
А чем вам не понравился плагин customSettings от Андчира community.modx-cms.ru/blog/addons/1778.html?
Он намного проще.
поэтому нужен простой интерфейс для записи и удаления настроек в settings.
Все настройки хранятся в базе system_settings доступны как через $modx->config/getConfig так и через плейсхолдеры.
Проверил — пустые создаются на ура
Возможно лучше будет использовать автоматическую транслитерацию, проверку на корректность ввода
[(g.site_name)], [+g.base_image+], [*g.image*]…
что б избежать путаницы :) так во первых сразу понятно где искать и откуда переменная )
а иначе если еще и в своем сниппете то фиг найдешь :)
Зашёл опять в редактирование и нажал просто Сохранить, ошибка повторилась
Хм. Вообще странно. На этой строке берется контент шаблона. и судя по всему он не может отрендерить сам элемент… Странно…
Ставил из Extras, но потом качнул из репозитория и перезалил файлы.
Ошибка:
file_get_contents(..\settingsElement.tpl): failed to open stream: No such file or directory in ..\class.renderer.inc.php on line 90
в общем та же))
Временно решить проблему можно просто потыкав по значениям в базе.
Модуль для создания новых справочников — новых таблиц, и вывода их в дереве.
Так же и глобальные настройки для сайта.
Для первых вполне себе CfgTV с обязательно включенным ManagerManager. Для остального — модуль.
+ Я бы добавил возможность запретить всем кроме админа редактировать настройки.
тоесть только оставлять 1 вкладку. И будет мега.
Кто установил, обновитесь с гитхаба)
Что сделано:
Запись глобальный настройки вида g_[%option_name%] для доступа к настройке без плагина.
Добавлена настройка позиции для группирования настроек.
Поправлены баги с сохранением текста содержащего переносы строк в базу. (Будет еще допиливаться для сохранения переносов т.к. сейчас они просто вытираются)
Добавлен пользовательский шаблон для вывода настройки, в пользовательском шаблоне не выводится имя настройки а только описание.
Начата разработка фронтэнд редактора для настроек (инпутов, текстареа, ричтекст, изображений и файлов)
Чуть подробней в шапке. Как обычно можно покопать гит)
Если добавить еще небольшой плагин и вынести это все в верхнее меню получается вообще мега удобно для менеджеров ))
Значится что на скринах. Для редактирования глобальных настроек написан плагин. Этот плагин добавлят скрипты и немного модифицирует страницу. К текстам добавляется wysiwyg к изображениям и файлам mcpuk. Можно редактировать тексты из инпутов, текстареа, ричтекст, прикреплять изображения и видео, менять ссылку на файл или изображение.
Увы. Выложить все это я смогу только 28го т.к. уезжаю а сейчас прошу вас накидать наиболее желаемые варианты редактирования на фронте.
Заранее спасибо.
Кстати, глупый вопрос. Я ведь ни разу ещё это решение не щупал, поэтому и вопрос такой.
С его помощью можно решить задачу: дать менеджеру клиента (он веб-юзер) доступ с фронта к определённым ресурсам, чтобы он мог для этих ресурсов редактировать значения мульти-ТВ? например, табличку цен на услуги?
И чтобы редактировать он мог только этот мульти-ТВ, и ничего более в ресурсе. Доступ у него только с фронта, ессесссно.
З.Ы. Дима потестил. Сказал удобная фича)
насколько глубоко в чанках видны настройки, видны ли они в чанках Ditto, к примеру и т.п.? Или они видны только в шаблоне?
В общем думаю что все подмены будут чувствовать себя как родные. В любом случае есть возможность писать настройку без всякой шелухи и использовать ее без плагина. Модуль поддерживает такую фичу если включить в настройках «Использовать настройки без плагина».
некорректен, поскольку событие onParseDocument вызывается пока все не распарсится (до 10 раз). Раньше парсер остановится только если за предыдущие вызовы ему удалось распарсить все чанки и сниппеты и на текущем шаге длина документа не изменилась (т.е. не осталось ничего, что можно прасить дальше). Соответственно столько же раз вызывается и ваш плагин, а не
п.с. хотя заметил только что
и понял что был не прав :)
П.С. Я так понял вы уже попробовали модуль) Фидбек имеется?
просто установил через extras, создал настройку
в конфигурации включил плагин для редактирования во фронте
и вот на этом начинается загвоздка:
на сайте в шаблон вставлял по разному
[(g_inputphone)], [(g.inputphone)] — почему то если в ней ввожу номер телефона на сайте выводится только цифра «1», если ввожу слово — то выводится название сайта
если [(global_inputphone)] то выводится следующий код
и скрипты от плагина front… загружается но нет возможности ничего редактрировать.
Направьте пжл куда нужно копать и как правильно писать!
У меня при создании переменной пишет такую ошибку
На сборке 1.1-d8.0 все работает.
Модуль globalPlaceholders ставил с гитхаба, из extra такой же результат.
Не сталкивались с такой ошибкой?
2) Надо бы стили подлатать под новую админку
А автора здесь давным-давно нету, похоже, забросил он Эво.