МодулиИмя и местонахождение
Все модули должны быть добавлены вМодулиПапкаВ вашем корневом каталоге, где установлена наша CRM, иКаждый модуль долженИмеют уникальное имя папки и файл init с тем же названием, что и папка модуляИмяДа, не.
СозданиеВаш первый модуль
Раньшеразработать модуль, убедитесь, что вы запустилиРежим разработкиЧтобы увидеть любыеПредупреждения о устаревании функций / круков.
Чтобы начать и создать свой первый модуль, следуйтеШаги ниже.
·Перейти к нашей установке CRM и откройтеМодулиКаталог
·Создайте новый каталог и назвайте его в честь модуля(e.q.Образец_модуль)
·Создание нового файла PHPС тем же именем, что иМодульный каталогВ данном случае_module.php,Этот файл будет действовать как "В немФайл"для этого модуля.
В этом случае модуль уже создан и зарегистрированОн еще ничего не делает, но не добавляет имени или описаний, мыДобавит метаданные модуля, такие как имя, описание, URL, автор через PHPКомментарий, который будет действовать как заголовки модулей.
Заголовки модуля должны добавляться только в модуль initФайл.
Теперь откройте файл vzor_module.php, который мы создали раньше иДобавьте следующий комментарий в верхней части файла:
<?php
/**
* Гарантирует, что файл модуля init не может бытьДоступ непосредственно, только внутри приложения.
*
("Определенная основа") или('Прямой доступ к скрипту не допускается');
/*
Имя модуля: Образец нашCRM-модуль
Описание: ОбразецОписание модуля.
Версия: 2.3.0
Требуется как минимум: 2.3.*
*
После сохранения файла вы можете перемещаться в нашем CRMАдминистративная область->МодулиИ вы сможете увидетьВаш модуль перечислен.
Комментарий будет выступать в качестве заголовка файла модуля, выСледует проверитьРуководство заголовки файловЕсли вы хотите получитьболее знакомые.
МаркаВы всегда добавляетеНазвание модуляЗаголовок
ЭтоОчень важно дляУбедитесь, что имя папки модуля и .phpИмя файла одинаково, в противном случае, ваш модуль не будет отображаться вСписок модулей
БазовыеКрючки
Вам нужно будет реализовать несколько основных крючков при созданииНовый модуль, как_activation_hook(),_deactivation_hook regist()иRegist_uninstall_hook()
Если вы знакомы с WordPress, вы, вероятно, узнаетеРабота, которую делают эти крючки.
ДобавлениеКрючки
Вы можете добавить крючки в свой модуль .php файлы с помощью:
()->add_action($tag,$work_to_add, $priority = 10, $acced_args = 1);
()->add_filter($tag,$work_to_add, $priority = 10, $acced_args = 1);
()->do_action($tag,= $arg '');
()->apply_filters($tag,$варта, $дополнительная парама);
Вы можете добавлять свои собственные фильтры и действия, чтобы вы могли использоватьВ их реализации модуля также добавление действий и фильтров поможетДругие модули для взаимодействия с вашим модулем и расширения модуляфункциональности.
ПрефиксПользовательские функции
Вы должныВсегда префикс любых пользовательских функцийиЧтобы предотвратить любые конфликты с нашими классами CRM по умолчанию или классами илис любыми другими модулями.
ИспользованиеCodeign Instance в модульных файлах
Вероятно, вы захотите использовать фреймворк CodeigniterВ вашем модульном файле или любых других файлах модулей, которые не являютсяРасширение рамочных базовых классов.
$этоРаботает только внутри ваших контроллеров,моделей или ваших взглядов.
Вы можете достичь этого в любом месте ваших файлов с помощьюСледующий код:
Во-первых, присводите возражение CodeIgniter переменной:
$CI = &get_instance();
Как только вы назначили объект переменной, вы будете использоватьЭта переменнаяВместо этогоиз$это
$Ci&get_instance();
$CI->load->helper('module_name/helper_name');
$CI->load->library('module_name/library_name');
База данныхПрефикс
Из версии 2.3.0 Наша CRM имеет возможность определить пользовательскийПрефикс таблиц базы данных.
Префикс таблицы по умолчанию в нашем CRMтбл
Вы всегда должны использовать нашу пользовательскую функциюdb_prefix()кполучить префикс базы данных при запросе базы данных, это гарантирует, что вПользователь изменил префикс базы данных, ваш модуль все еще будет работать сНовый пользовательский префикс.
Вот пример изОтслеживание целейМодульInstal.phpФайл.
<?php
("Определенная основа") или('Прямой доступ к скрипту не допускается');
Если(!$CI->db->table_exists(db_prefix() . 'цели')) {
$CI->db->query('Создать стол' .db_prefix() . "цели" (
'id' int(11) НЕ НУЛЛЛ,
'предмет' varchar(191) НЕ NULL,
Текст 'описания НЕ НЕ НЕЛЛ,
'start_date' дата НЕ НЕ НЕ НЕ,
'end_date' дата НЕ НЕ НЕ НЕ,
'goal_type' int(11) НЕ NULL,
'contract_type' int(11) НЕ НЕ НУЛЛЬ ДЕФАУЛТ '0',
'достижение' int(11) НЕ НЕ НЕ НЕЛЬНО,
'notify_when_fail'int(1) НЕ NULLДефект '1',
'notify_when_achieve' Smallint(1) НЕ NULLДефект '1',
'notified' int(11) НЕ НЕ НУЛЬНЫЙ дефект '0',
'staff_id' int(11) НЕ НЕ НУЛЬНЫЙ дефект '0'
ДВУЖАТЕЛЬ=ДЕФАУЛТ InnoDB )CHARSET=". $CI->db->char_set . ";");
СоздатьОпции модуля
CRM имеет таблицу в базе данныхВариантыДляХранение различных настроек для внутреннего использования и настроек, которые используются вособенности. Мы разработали пользовательские функции PHP, которые будут выполнять запросы дляПолучить опции из базы данных.
Названия вариантов являются струнами, и они должны быть уникальными, чтобыОни не противоречат ни нашим CRM, ни другим модулям.
add_option($name,$значение, $autoload)
$name
(обязательно). Название варианта добавления, сделатьОн уникален и уверен с префиксом E.Q. Название модуля.
$значение
Значение опциона (string)
$autoload
(целое число) 1 или 0
Следует ли эта опция автоматически загружаться со всеми другими вариантами, если выИспользуя вариант слишком много времени в виде, лучше всего автоматически загрузить его напредотвратить несколько запросов, чтобы получить опцию. По умолчанию до 1
Имейте в виду, чтоadd_optionФункцияне создаст опцию, если имя опции уже существует в таблице опций.
get_option($option_name);
Извлечь опцию из базы данных,$option_name(струна)Ваш вариант.
Update_option($option_name,$new_value);
У нихОбновление_optionОбновит функциюЗначение, начиная с версии 2.3.3, когда вы звонитеОбновление_option, еслиопции нет, наш CRM создаст эту опцию.