Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Создание полноценного модуля
- 
		27 марта 2011 г.
- 
		Для создания довольно специфичного проекта, требуются довольно серьёзные доработки. Имеющиеся модули не могут решить поставленных задач, в полном объёме, даже при совсем незначительных доработках.
 Совсем не хочется коверкать рабочую часть CMS, которая постоянно дополняется и улучшается, по причине того, что над существующим функционалом работают люди, у которых есть свой чёткий план развития проекта, в рамки которого не входит максимальное соответствие моему проекту.
 
 Задачи:
 Требуется создать полноценный модуль (шаблон). На основе, которого можно создавать модули различного уровня сложности.
 
 Решение:
 Создаём 6 файлов в кодировке UTF8 (без BOM) которые организую ядро модуля.
 example.php – Главный класс модуля (контроллер)
 example.admin.php – Подключение интерфейсов управления модулем
 example.admin.config.php - Конфигурирование модуля
 example.install.php – Инструкции для правильной интеграции и удаления модуля
 example.model.php – Модель модуля
 example.view.php – Отображения модуля (шаблоны)
 
 модуль нормально интегрируется в систему, но в итоге при переходе а страницу сайта, за которым закреплён данный модуль, получаем пустую страницу без каких либо данных и информации об ошибках. Следовательно происходит где-то краш. Трудно писать для чёрного ящика. ;)
 В чём проблема? Прикрепляю пример. Спасибо.
- 
		
- 
				
- 
		
- 
		29 марта 2011 г.
- 
		Действительно всё так плачевно, что не разобраться за 5 минут? Эх 
- 
		
- 
				
- 
		
- 
		09 апреля 2011 г.
- 
		Хорошо, пойдём всё сначала раз уж запущена новая версия.
 У структура стала жестковата не могу написать инсталер для модуля нужна помощь.
 Таблица site осталась вполне понятной, это список установленных модулей.
 таже rewrite, таблица для переопределения путей, а вот дальше полный мрак.
 
 adminsite сюда идут множественные обращения как правильно заполнять данную таблицу
 adminsite_parents заполнение будет зависить от наполнения adminsite.
 
 Плюс добавилось несколько файликов:
 example.sitemap.php - насколько необходимо наличае этого файла?
 admin/example.admin.category.php - тоже самое, нужно ли.
 admin/example.admin.menu.php - появился в результате значительного изменения механизмов создания и управления меню (тоже не разобрался пока что и как тут)
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г. , редакция: 12 апреля 2011 г.
- 
		Мне забить на это дело и не покупать лицензию под проект чтоли? Из за того что невозможно сделать в кустарных условиях для закрытого ядра модуль. Точнее проект 1 а лиц понадобится штук 10 может больше если попрёт.
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г.
- 
		Ща разберемся 
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г.
- 
		обясните по подробнее про эти таблицы
 
 adminsite
 adminsite_parents
 
 дальше я соберу всё в кучу если опять будет белый экран или будет всё ок. Выложу архивчик сюда.
 И будем дальше разбираться рисовать архитектуру, которую нужно знать стороннему разработчику модулей.
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г.
- 
		Стороннему разработчику нужно знать про "Режим разработки", который спасает от белого экрана.
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г. , редакция: 12 апреля 2011 г.
- 
		Хоть включай хоть не включай - белый экран это 0 байт и причина такого поведения вообще не понятна. Потому, что трейсить нельзя. Вот. Может быть я что-то упустил и модуль не корректно подключается к ядру может ещё что нибудь.
 Именно по этому я начал всё сначала и пытаюсь разработать модуль, который ничего не делает но тем не менее в рабочем состоянии и имеет все возможности к дальнейшему расширению до уровня любой сложности. Для движка v. 4.4
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г.
- 
		Режим разработки выводит ошибки. Белый экран при включенном режиме разработки может выводится по двум причинам:
 1. прерывание работы скрипта:Кодexit;
 2. выводить ошибки на экран никак нельзя из-за настроек хостинга. но тут уж надо боротся с хостингом, так как отключение этой возможности совсем не есть лучшее решение в настройке сервера.
 В остальных случаях на экран выведется ошибка, по которой можно понять в каком месте Вы ошиблись.
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г.
- 
		Хостер тут ни причём, потому что его попросту нет. Работы ведутся на собственной машине, в других проектах режим отладки включен и работает нормально. exit; не использовал, но тем не менее.
 Вопрос остаётся открытым
 На данный момент надо написать правильный инсталятор модуля для чего нужно знать и чётко себе представлять как и что с таблицами: adminsite и adminsite_parents.
- 
		
- 
				
- 
		
 
 
 
 
 
 
- 
		12 апреля 2011 г. , редакция: 12 апреля 2011 г.
- 
		Почему для закрытого? Документацию обновляем потихоньку. Назначение новых файлов в документации появилось в первую очередь. Вот, к примеру, у модуля "Магазин" описано для чего какие файлы нужны http://cms.diafan.ru/dokument/full-manual/modules/shop/
 Но если Вы создаете свой модуль, то зачем Вам лишние файлы? Если Вы не знаете для чего они нижны, значит Вам пока не понадобилась та функция, которую они выполняют. Новые файлы - новые возможности, а основная структура осталось той же.
 Лучше идти от минимального: стал вопрос как добавить ссылки модуля в карту сайта, прочитали о карте сайта: http://cms.diafan.ru/dokument/full-manual/modules/map/ , узнали о файле example.sitemap.php
 Инсталл модуля тоже, я считаю не нужен для одного сайта. Добавили таблицу модуля в бд, добавили пункт меню в site.ru/admin/adminsite/ и не нужно разбираться для чего нужна табилица adminsite и пр.
 В этом удобство разработки сайта под cms - вам не нужно делать универсальных решений, Вам нужно решать конкретные задачи. Поэтому у нас разработка функций в службе исполнения заказа идет гораздо быстрее, чем внедрение этих же функций в CMS. Так как написать решение для конкретного сайта гораздо проще.
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г.
- 
		Ещё раз скажу. Подобных ресурсов будет не один - это однозначно и для каждого заниматься переливанием будет не удобно и будет отнимать много времени. Лучше сразу залезть поглубже и разбить лагерь вместо того чтобы ночевать на ветке, которая может в один прекрасный день отломиться :)
 Если я не знаю толком о новом функционале, это не значит что он мне не нужен, по этой неграмотности я могу придумывать какие нибудь новые способы изобретая велосипед. Это не есть хорошо для проекта в целом.
- 
		
- 
				
- 
		
- 
		12 апреля 2011 г. , редакция: 12 апреля 2011 г.
- 
		Мы планируем в ближайшее время обновить документацию, где в разделе Архитектура diafan.CMS: http://cms.diafan.ru/dokument/full-manual/architecture/ будет описаны особенности новой версии.
 
 Сейчас уже Вы можете почитать назначение новых файлов в разделе Модули.
- 
		
- 
				
- 
		
 
 
 
- 
		12 апреля 2011 г.
- 
		Ребята, давайте искать золотую середину, коей является документация, в том или ином виде. Это должна быть универсальная база знаний. Если кинуться в крайности, то нам тоже не удобно объяснять одному пользователю его частного случая, другому - другого частного случая, третьему - третьего. Потому что это всегда почти одно и тоже, только в разном виде. И если не понимать принцип, можно бесконечно спрашивать одно и тоже, хотя каждый будет уверен, что его случай уникальный.
 Вот у Дмитрия в принципе вопрос правильный "как создать модуль с нуля". Почему в принципе? Потому, что в документации у нас описано, как устроены модули, т.е. есть сухая строгая теория. Но сторонним пользователям, как оказалось , нужно еще и пошаговое практическое руководство. Давайте в вопросах и ответах результатом этого топика сделаем как раз пошаговое руководство, что сделать, чтобы создать простой модуль. , нужно еще и пошаговое практическое руководство. Давайте в вопросах и ответах результатом этого топика сделаем как раз пошаговое руководство, что сделать, чтобы создать простой модуль.
 И затем покумекаем, какая еще нужна информация о работе с CMS, и в каком виде. 
- 
		
- 
				
- 
		
- 
		13 апреля 2011 г. , редакция: 13 апреля 2011 г.
- 
		Вот Витал тебе 5 баллов. Сейчас почищу основные файлики и выложу сюда дальше опишеш что делать надо для того чтобы заработало :) или могу постараться картики нарисовать для большего понимания.
 Например после мучительных подуг с Joomla! я нашёл для себя отличное решение CodeIgnitor и меня очень порадовал тот факт, что очень качественная документация к нему шла и можно было вкуриться пополной, за сравнительно небольшой промежуток времени, но к сожалению доки были на английском поэтому приходилось переводить. Вот если бы в доках были бы такие небольшие вкрапления кода чтобы можно было разобратся самому то вопросов бы у меня по крайней мере не возникало.
 Для интереса вот ссылка, например контроллер: codeigniter.com/user_guide/general/controllers.html
- 
		
- 
				
- 
		
 
- 
		13 апреля 2011 г.
- 
		Шаг 1. Необходимый минимум для создания нового модуля.
 Модель - Шаблон - Контроллер, позволяют создать блок для вывода, какой либо информации в зависимости от каких либо остоятельств.
 
 Теперь попробую зарегистрировать его и вывести на страничке сформированные в нём данные.
- 
		
- 
				
- 
		
- 
		13 апреля 2011 г. , редакция: 13 апреля 2011 г.
- 
		Давайте тогда пошаговое руководство создавать.
 1. Первым делом любой разработчик должен знать и помнить, что при любых манипуляциях с кодом надо включать режим разработчика и отключать кэш. Это
 define("MOD_DEVELOPER", TRUE);
 define("MOD_DEVELOPER_CACHE", TRUE);
 в файле config.php
 Или две соответствущие галки в административной части сайта "Параметры сайта" - "Режим разработки" site.ru/admin/config/
 Режим разработки будет выводить все возникащие ошибки, а отключеный кэш сразу все актуальные данные из БД.
 
 2. Опираемся на документацию видим, что нужны три минимальных файла example.php example.modelphp и example.view.php. (Дмитрий, у Вас все правильно в архиве.) Создавайте папку /modules/example/ и кладите туда эти три файла. Затем можно идти в админку, создавать страницу и на нее вешать этот модуль. Создавайте "Страница пример" и в "Дополнительно" - "Прикрепить модуль" уже будет Ваш example. Движок сканирует папку /modules/ и выуживает оттуда подпапки модулей.
 В выпадающем списке модуль будет называться "example". Чтобы там было написано "Супер-модуль" или иное Ваше русское название, надо определить переменную _LANG_EXAMPLE в языковом файле /language/ru.php
 
 //Пример
 define('_LANG_EXAMPLE', 'Супер-модуль');
 
 Там видно по аналогии с другими модулями все системные переменные модулей, которые нужно определить и иметь, чтобы переназвать по своему.
 
 После этого открываете на сайте страницу - на ней исполнится Ваш модуль  
 
 Пробуйте, отписывайтесь что получилось.
 
 Далее:
 
 3. Если используется БД, таблицу надо создать. По умолчанию называйте ее как модуль. Если модуль example, то и таблица должна быть prefix_example, если есть несколько таблиц для модуля, то prefix_example_category и т.д. В дальнейшем рассмотрим как создавать инсталлы, но по сути в файле инсталла те же самые команды для SQL по созданию/удалению таблиц.
 
 4. Административная часть модуля...
- 
		
- 
				
- 
		
- 
		14 апреля 2011 г.
- 
		Залил. добавил страницу. Ура example появилось. Выбрал. Сохранил. Перешёл на сайте на страницу. Замечательно модуль отработал. Добавил в ru.php запись на русском. Захожу в редактирование страницы в ожидании что example поменяется на то что я в языковой пакет написал. Упс ни того ни другого. прикрепил другой подуль, думал может из за того что прикреплён не показывается. А нет. Пропал совсем. Теперь что делать? Удаление записи из языкового пакета тоже не помогло. Добавление удаление страницы тоже не помогло.
- 
		
- 
				
- 
		
- 
		14 апреля 2011 г.
- 
		Так. Т.е. модуль залили, папка называется /modules/example/ и там сидят три файла example.*.php
 Подключили модуль к странице - вывелся, отработал. В выпадающем списке подключения модуля было написано example, правильно? Вы пошли в /language/ru.php и добавили строку
 define('_LANG_EXAMPLE', 'Название модуля');
 и все сломалось?
 Добавили для верности в середину файла, где-нибудь рядом с другим модулем, например с новостями, запятые и скобки не перепутали и не перемешали с другими? _LANG_EXAMPLE - называется так же как модуль буква в букву, но заглавными?
- 
		
- 
				
- 
		
- 
		14 апреля 2011 г. , редакция: 14 апреля 2011 г.
- 
		Совершенно верно.
 Строка добавлена перед разделом описывающим администраторскую часть перед строкой
 Кодdefine('_LANG_FORUM_NEW_MESSAGE', 'Непрочитанные сообщения');
 
 define('_LANG_EXAMPLE', 'Болванка');
 
 //Администрирование
- 
		
- 
				
- 
		
- 
		14 апреля 2011 г.
- 
		Ну если не дадите доступ к этому проекту или еще хоть какую-нибудь информацию кроме "не работает", мне сказать нечего тогда. Это простейшие движения и я параллельно делаю их же у себя. Пытался нарочно переименовать и поломать названия и файлы - ничего не исчезает. Не могу представить, как может не работать. То же самое, что сказать <?php echo "Мир"; ?> - не работает! 
- 
		
- 
				
- 
		
- 
		14 апреля 2011 г. , редакция: 14 апреля 2011 г.
- 
		Ну это я понимаю на моей машинке это всё добро на столе стоит. Попробую ещё раз. Всё убить поставить и сделать. Но с другой последовательностью. Сначала в пакете русскую подпись пропишу, а потом запустить попробую. на моей машинке это всё добро на столе стоит. Попробую ещё раз. Всё убить поставить и сделать. Но с другой последовательностью. Сначала в пакете русскую подпись пропишу, а потом запустить попробую.
- 
		
- 
				
- 
		
 
 
 
 
 
- 
		16 апреля 2011 г.
- 
		ЦитатаДавайте сделаем общий тестовый демо-сайт что-ли, на нормальном хостинге, с общим доступом на FTP для просмотра файлов...
 
 давайте, целиком за!
- 
		
- 
				
- 
		
- 
		02 августа 2011 г.
- 
		Потребовалось добавить настраиваемые поля (дополнительные параметры) для различных типов объектов.
 Столкнулся вот с какой штукой:
 Разобрал 3 базовые таблицы - (param:список параметров, param_element: значения параметров, param_select: списки выбора параметров для селекта и мультиплов)
 
 ВОПРОС: Для чего используется поле value в param_select ?
 интересуюсь с целью того чтобы сохранить поведение работы (типовую схему обработки).
- 
		
- 
				
- 
		
 
- 
		03 августа 2011 г. , редакция: 03 августа 2011 г.
- 
		Начал делать админку для модуля.
 Полагаю необходимо 2 файла.
 module.admin.php - непосредственно часть которая ответственна за работу с модулем из админки.
 module.admin.config.php - если необходимы средства настройки.
 Как я понимаю - этого недостаточно, чтобы в админке появилась ещё одна строчка скажем в разделе контент. Что-то надо написать в базе скорее всего.
 
 ВОПРОС: Какие манипуляции ещё нужно произвести для того чтобы добавит управление модулем из админки?
- 
		
- 
				
- 
		
- 
		04 августа 2011 г.
- 
		Об этом написано в руководстве, нужно только поискать  
 http://cms.diafan.ru/dokument/full-manual/architecture/admin/module/%D1%88%D1%82%D1%81%D0%B4%D0%B3%D0%B2%D1%83/ - Подключение модуля
- 
		
- 
				
- 
		
- 
		16 февраля 2014 г. , редакция: 16 февраля 2014 г.
- 
		Ссылка битая, инфа тут: Подключение модуля, администрирование модуля
- 
		
- 
				
- 
		
 
 
- 
		12 декабря 2011 г.
- 
		Всем читать - Как создать свой модуль для diafan.CMS руководство от разработчиков CMS.
 
 Если есть пожелания или замечания по примерам, пишите их здесь, не хочется дублировать тему.
- 
		
- 
				
- 
		
- 
		16 февраля 2014 г. , редакция: 16 февраля 2014 г.
- 
		Ссылка поменялась: как создать свой модуль
- 
		
- 
				
- 
		
 
- 
		- Denis (Drachoon)
- 154
 
- 
		13 декабря 2011 г.
- 
		Такая штука.
 Есть таблица с Терминалами соответственно поле name в этой таблице отсутствует в виду того, что Какую информацию сюда писать? Просто слово терминал? Както по моему не очень правильно.
 При выводе списка терминалов в админке через метод $this->list_row();
 Вылазит ошибка следующего плана Unknown column 'e.name' in 'field list' query ...
 Что делать? добавлять пустое поле не очень хочется и писать собственный метод для модуля тем более.
- 
		
- 
				
- 
		- 
		- Denis (Drachoon)
- 154
 
- 
		15 декабря 2011 г.
- 
		Решил проблему просто переименовал поле месторасположения на 'name'.
- 
		
- 
				
- 
		
- 
		15 декабря 2011 г.
- 
		А можно было просто прописать $this->name='text'; // где text имя вашего основного поля
- 
		
- 
				
- 
		- 
		- Denis (Drachoon)
- 154
 
- 
		15 декабря 2011 г.
- 
		Ну вот - изюм :)
- 
		
- 
				
- 
		
 
- 
		
 
 
- 
		
- 
		- Denis (Drachoon)
- 154
 
- 
		15 декабря 2011 г. , редакция: 15 декабря 2011 г.
- 
		Есть модуль банк там информация о банках: название адрес телефон... и есть у модуля банк подмодуль Банкомат(терминал) в админке это выглядит как подраздел со списком терминалов банков держателей.
 Физически выполнено в виде файла /banks/admin/banks.admin.cashpoints.php
 Хочу добавить в главное меню ссылку на этот подмодуль. Вот хочу спросить как это делать.
 надо создавать файлы /banks/banks.cashpoints.php, /banks/banks.cashpoints.model.php, /banks/banks.cashpoints.view.php для фронт енда или зашивать функционал в /banks/banks.php, /banks/banks.model.php, /banks/banks.view.php или я зря решил такой под модуль вcтроить внутрь модуля банк?
 Вот что-то както должно походить на вкладку категории в шопе и выбираться при формировании меню на чегото както я пока не могу допетрить как это работает.
- 
		
- 
				
- 
		
- 
		15 декабря 2011 г.
- 
		Проще будет /banks/banks.php, /banks/banks.model.php, /banks/banks.view.php - добавить новый функционал (или вынести его в файлы и подключать через include), потому что к странице прикреплен модуль Банк - он и будет отображаться.
- 
		
- 
				
- 
		- 
		- Denis (Drachoon)
- 154
 
- 
		15 декабря 2011 г. , редакция: 15 декабря 2011 г.
- 
		Понятно - значит лучше переделать и банкоматы отдельным модулем сделать прилепив потом это в виде доп модуля к банкам - так же как корзина к шопу прикручена.
 Ну вот блин - решил всё в одном попробовать сделать - получается не очень юзабельно :)
- 
		
- 
				
- 
		
 
- 
		
 
Новости
- 
                            19 сентября
- 
                            Мы внесли изменения в лицензию и объявляем, что прекращаем техническую консультационную поддержку сайтов на DIAFAN.CMS версий старше 7.0. А это все минорные версии платформы, предшествующие актуальной линейке, а именно: версии серии 4.x, 5.x, 6.x.
- 
                            15 сентября
- 
                            У нас отличные новости! Мы выпустили новую сборку DIAFAN.CMS 7.3, которая включает встроенные нейросети непосредственно в административной панели. Это значит, что создание контента для вашего сайта больше не будет проблемой — искусственный интеллект возьмет эту задачу на себя, избавляя вас от необходимости привлекать копирайтеров или тратить время на написание текстов самостоятельно.
- 
                            25 марта
- 
                            Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее.
Блоги
- 
								10.09.2025
- 
								DIAFAN.CMS славится нагрузоустойчивостью и безопасностью, про инциденты со взломом сайта на нашей системе давненько не слышали, но недавно получили мы письмо от fstec.ru такого характера: Обнаружена уязвимость в CMS-системе DIAFAN, позволяющая нарушителю, действующему удалённо, красть сессионные куки через XSS-атаку. 
Блоги
- 
								24.04.2024
- 
								Выпустили новую сборку DIAFAN.CMS 7.1.4. 
Блоги
- 
								12.01.2024
- 
								В данном руководстве познакомим вас с панелью управления DIAFAN.CMS