Писать на форуме 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 г.
-
Понятно - значит лучше переделать и банкоматы отдельным модулем сделать прилепив потом это в виде доп модуля к банкам - так же как корзина к шопу прикручена.
Ну вот блин - решил всё в одном попробовать сделать - получается не очень юзабельно :) -
-
-
-
Новости
-
18 июня
-
В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
-
24 апреля
-
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
-
12 января
-
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.
Блоги
-
24.04.2024
-
Выпустили новую сборку DIAFAN.CMS 7.1.4.
Блоги
-
12.01.2024
-
В данном руководстве познакомим вас с панелью управления DIAFAN.CMS