Создание утилиты "Генератор копонента" для iCMS v 1.10.3. Описание работы с ней и указания на вопросы безопасности. Назначение утилиты — избавить кодера от рутины и дать ему простой инструмент для создания заготовки компонента.
Утилита вовсе не требует подключения к сайту, как компонент или модуль. Все, что требуется, это поместить единственный файл в корень сайта и набрать в браузере после слэша имя файла утилиты. Поэтому этот файл содержит и стили, и тексты генерируемых файлов. После использования утилиту из корня сайта необходимо удалить.
Обычно все (и я в том числе) пишут на локальных серверах. Это еще одна причина, почему генератор оформлен в виде утилиты. Если ваш локальный сервер не настроен, чтобы быть видимым из интернета (а по умолчанию это так, что для Денвера, что для Ксампа), утилиту можно спокойно держать в корне локального сайта. Естественно, если вы выкладываете сайт с локальной машины на хостинг, посмотрите еще раз, не попала ли моя утилита "зайцем" на удаленный сервер!
Если Вы вдруг надумали писать все-таки на удаленном сервере (например, используя PhpStorm), то:
— во-первых, помните о безопасности. Удалите утилиту сразу после использования.
— во-вторых, настройки удаленного сервера могут отличаться от настроек Денвера. В этом случае, я не обещаю корректную работу утилиты.
1. Имя компонента латиницей. Это имя должно быть уникально и не может совпасть с именами других, уже установленных компонентов. Поскольку это имя будет в составе url страницы, смотрите, чтобы там не было символов, невоспринимаемых в URL. Например, знак подчеркивания не катит, а минус — пожалуйста.
2. Название компонента, можно по русски.
3. Автор компонента. Скорее всего это Вы.
4. Галка публикации. По умолчанию установлена. Можете снять, если не хотите немедленно публиковать компонент на сайте. Можете потом, после отработки утилиты, зайти в админку и включить/выключить публикацию компонента.
5. Создавать или нет админку. Иногда простые компоненты обходятся без админки. Выбирайте, исходя из своих замыслов будущего (Вашего!!!!) компонента.
6. Префикс таблиц Вашей базы данных. Укажите тот префикс, который вы указали, когда устанавливали Инстант на сервер. По умолчанию, естественно, cms_
7. Версия компонента. Любые шесть символов. По умолчанию 1.0.
Внимательно читайте примечания под вопросами, и вы создадите пустую, но сразу работающую болванку компонента (или, как говорят мои студенты, "рыбу") за полминуты. Пока Вы не нажали кнопку "Создать компонент", никаких изменений ни в файлах, ни в базе данных не произойдет.
После создания компонента Вам предстоит пройти в админку и создать пункт меню, указывающий на Ваш новый компонент. Этот компонент после своего рождения умеет делать одну-единственную вещь: он выводит мем "Здравствуй, мир". Наполнение компонента функционалом — это уже ваше дело. Что хотите, то и творите.
2. Теперь можно назначить своему компоненту номер версии, отличный от 1.0.
3. Утилита проверяет, есть ли в текущем шаблоне файл system.php. Если нет, создает в текущем шаблоне файл с расширением *.tpl. Если есть, зачитывает из него расширение для будущего файла. Предупреждение. Если файл system.php обнаружен, и расширение для файла-шаблона успешно зачитано, файл-шаблон сгенерируется, но его содержание будет "как для Смарти". В этом случае у Вас могут быть траблы с новым компонентом, когда Вы попытаетесь открыть его в браузере. В этом случае Вам придется открыть текст файла-шаблона и… ручками, ручками… создать текст под свой шаблон. А то разбаловал я Вас!
4. Утилита создает языковые файлы в папке language/ru, если русский язык выбран в качестве языка интерфеса при создании сайта. Если выбран английский, файлы создаются в папке language/en и так далее. Предупреждение. Файлы создаются с русскими значениями, поэтому, если хотите английского, открывайте их редактором и… ручками, ручками.
5. Исправлены мелкие ошибки
Если при обращении из утилиты к БД сайта возникли траблы, эта строчка позволит Вам узнать, в чем дело.
Хотя, я полагаю, если Вы взялись писать компонент, проблем у Вас быть не должно, а если они появились, Вы должны уметь справится с ними самостоятельно.
wmr 342960323367
Удачи в программировании.
Постановка задачи.
В процессе написания новых компонентов я сталкивался с необходимостью с нуля создавать всю структуру компонента. При этом я обратил внимание, что многие тривиальные действия мне пришлось повторять снова и снова. С моей точки зрения, программирование для того и существует, чтобы избавить человека творческого труда от рутины. Поэтому мной был создан, по видимому, новый тип приложений к Инстанту — утилиты.Утилита вовсе не требует подключения к сайту, как компонент или модуль. Все, что требуется, это поместить единственный файл в корень сайта и набрать в браузере после слэша имя файла утилиты. Поэтому этот файл содержит и стили, и тексты генерируемых файлов. После использования утилиту из корня сайта необходимо удалить.
Для кого писалась утилита?
Прежде всего, для себя любимого. А еще для тех, кто и так знает структуру компонента, и может создать ее, пользуясь головой и руками. Если Вы — новичок, только осваивающий Инстант, боюсь, утилита принесет Вам больше проблем, чем облегчит жизнь. В любом случае, тому, кто собирается ею пользоваться, предстоит вручную редактировать генерируемые утилитой файлы — все до единого.Безопасность
Несколько слов о безопасности. Поскольку утилита задумывалась и писалась именно как утилита, не требующая подключения, в ней отсутствуют совершенно необходимые механизмы безопасности, которые есть в движке. Это одноразовый файл. Поэтому, сгенерировав с ее помощью компонент, немедленно удалите ее из корня сайта.Обычно все (и я в том числе) пишут на локальных серверах. Это еще одна причина, почему генератор оформлен в виде утилиты. Если ваш локальный сервер не настроен, чтобы быть видимым из интернета (а по умолчанию это так, что для Денвера, что для Ксампа), утилиту можно спокойно держать в корне локального сайта. Естественно, если вы выкладываете сайт с локальной машины на хостинг, посмотрите еще раз, не попала ли моя утилита "зайцем" на удаленный сервер!
Если Вы вдруг надумали писать все-таки на удаленном сервере (например, используя PhpStorm), то:
— во-первых, помните о безопасности. Удалите утилиту сразу после использования.
— во-вторых, настройки удаленного сервера могут отличаться от настроек Денвера. В этом случае, я не обещаю корректную работу утилиты.
Работа с утилитой
Распакуйте утилиту в корень локального сайта. Затем наберите адрес вашего локального хоста, слэш и имя утилиты (sitename.my/generator_com.php). Откроется форма, где надо ответить на все вопросы. Вся необходимая информация там есть в подсказках и инструкциях.1. Имя компонента латиницей. Это имя должно быть уникально и не может совпасть с именами других, уже установленных компонентов. Поскольку это имя будет в составе url страницы, смотрите, чтобы там не было символов, невоспринимаемых в URL. Например, знак подчеркивания не катит, а минус — пожалуйста.
2. Название компонента, можно по русски.
3. Автор компонента. Скорее всего это Вы.
4. Галка публикации. По умолчанию установлена. Можете снять, если не хотите немедленно публиковать компонент на сайте. Можете потом, после отработки утилиты, зайти в админку и включить/выключить публикацию компонента.
5. Создавать или нет админку. Иногда простые компоненты обходятся без админки. Выбирайте, исходя из своих замыслов будущего (Вашего!!!!) компонента.
6. Префикс таблиц Вашей базы данных. Укажите тот префикс, который вы указали, когда устанавливали Инстант на сервер. По умолчанию, естественно, cms_
7. Версия компонента. Любые шесть символов. По умолчанию 1.0.
Внимательно читайте примечания под вопросами, и вы создадите пустую, но сразу работающую болванку компонента (или, как говорят мои студенты, "рыбу") за полминуты. Пока Вы не нажали кнопку "Создать компонент", никаких изменений ни в файлах, ни в базе данных не произойдет.
После создания компонента Вам предстоит пройти в админку и создать пункт меню, указывающий на Ваш новый компонент. Этот компонент после своего рождения умеет делать одну-единственную вещь: он выводит мем "Здравствуй, мир". Наполнение компонента функционалом — это уже ваше дело. Что хотите, то и творите.
Дизайн
Дизайн специально сделан таким кошмарным, чтобы у Вас ни в коем случае не возникло желания им любоваться. Можете считать, я так прикололся.Настройки
Никаких настроек утилита, надеюсь, не потребует. Если очень надо, можно открыть ее вашим любимым редактором и добавить пару строчек в заготовки будущих файлов, хотя, наверно, это лучше делать уже после генерации файлов.Генерируемые файлы.
Внутри архива с утилитой есть одноименный файл с инструкцией и перечнем генерируемых файлов. Внутрь генерируемых файлов уже вставлены стандартные строчки, отвечающие за безопасность, инициирующие подключения ядра, соединения с базой данных, создания модели, объявления глобальным языкового файла и др.Подключение компонента к сайту
После создания структуры утилита подключается к БД и прописывает новый компонент в таблицу cms_components. Так что никаких sql-запросов делать не надо.Что нового в этой версии?
1. Утилита теперь проверяет, есть ли в БД компонент с именем, который Вы даете своему творению. Если есть, ничего не делает и выводит сообщение об этом.2. Теперь можно назначить своему компоненту номер версии, отличный от 1.0.
3. Утилита проверяет, есть ли в текущем шаблоне файл system.php. Если нет, создает в текущем шаблоне файл с расширением *.tpl. Если есть, зачитывает из него расширение для будущего файла. Предупреждение. Если файл system.php обнаружен, и расширение для файла-шаблона успешно зачитано, файл-шаблон сгенерируется, но его содержание будет "как для Смарти". В этом случае у Вас могут быть траблы с новым компонентом, когда Вы попытаетесь открыть его в браузере. В этом случае Вам придется открыть текст файла-шаблона и… ручками, ручками… создать текст под свой шаблон. А то разбаловал я Вас!
4. Утилита создает языковые файлы в папке language/ru, если русский язык выбран в качестве языка интерфеса при создании сайта. Если выбран английский, файлы создаются в папке language/en и так далее. Предупреждение. Файлы создаются с русскими значениями, поэтому, если хотите английского, открывайте их редактором и… ручками, ручками.
5. Исправлены мелкие ошибки
Если возникли проблемы
Найдите и раскомментируйте строчкуХотя, я полагаю, если Вы взялись писать компонент, проблем у Вас быть не должно, а если они появились, Вы должны уметь справится с ними самостоятельно.
Как скачать
Скачать можно тут.Куда говорить спасибо
яд 410011913797936wmr 342960323367
Удачи в программировании.
Реклама #
omax47 11 лет назад #
Странник 11 лет назад #
omax47 11 лет назад #
Azura 11 лет назад #
Странник 11 лет назад #
Странник 11 лет назад #
Странник 11 лет назад #
fortunato 11 лет назад #
Вопрос, я поставил генератор модуля все ок
Генератор компонента, создал всю структуру нормально (кстати пока не поставил папкам 777 не создавал файлы)
Но при открытии компонента, в пункте меню...выдает ошибку 404
версия инстант 1.10.1
Странник 11 лет назад #
По поводу 404 ошибки могу предположить, что вы, создав пункт меню, не "нацелили" его на вновь созданный компонент. Зайдите еще раз в админку и внимательно посмотрите, какое действие вы пункту меню назначили. В инструкции об этом подробно сказано.
fortunato 11 лет назад #
Странник 11 лет назад #
fortunato 11 лет назад #
мой первый компонент уже в работе)) и модуль...
получается вроде, все оказывается легко))
Странник 11 лет назад #
Удачи в программировании, не забудте нас порадовать своими произведениями!
Странник 11 лет назад #
Забирайте из моего профиля, кому надо.
Lora 10 лет назад #
Подскажите, какие ещё нужны условия для вывода данных в if ($do = 'view'), кроме $do = $inCore->do;
Странник 10 лет назад #
Lora 10 лет назад #
Баха 10 лет назад #
VopisUVD 10 лет назад #
Странник 10 лет назад #
Предупреждаю, что я этого не пробовал делать, поэтому буду благодарен, если кто-то сообщит об успехе/траблах запуска этой утилиты на 1.10.4.
Спасибо.
zan 9 лет назад #
Маленькая шероховатость: если префикс таблицы не cms, а любой другой (например, xxx), то генератор генерирует во фронтенд $model = new xxx_model_info();. А там нужно иметь $model = new cms_model_info();. В результате после привязки к пункту меню появляется Fatal error. Оно, конечно, сразу правится руками, но для полной красоты можно эту мелочь и пофиксить.
Странник 9 лет назад #
Raiden 9 лет назад #
Странник 9 лет назад #
Нил™ 7 лет назад #
Пять звёзд.)
Спасибо, счас попробуем запихнуть то что надо в компонент.