#crm #vtiger #vtigercrm
#crm #vtiger #vtigercrm
Вопрос:
Мне нужно создать пользовательский модуль в vTiger, но он должен иметь всевозможные варианты с точки зрения типов данных полей, значений по умолчанию, зависимых раскрывающихся списков, полей отношений [Тип пользовательского интерфейса 10] и т.д.
Я установил последнюю стабильную версию vTiger7, но я не могу запустить точку входа этого кода, поэтому дайте мне знать, как начать.
Комментарии:
1. Используйте консоль для создания модуля, затем создайте поля из пользовательского интерфейса vtiger. Руководство по созданию модуля из командной строки community.vtiger.com/help/vtigercrm/developers/vtlib /…
Ответ №1:
Вот скрипт, в котором вы можете создать новый пользовательский модуль vTiger7
. Продолжайте кодировать !!
Вам нужно выполнить этот скрипт через url.
<?php
include_once 'vtlib/Vtiger/Module.php';
include_once 'vtlib/Vtiger/Package.php';
include_once 'includes/main/WebUI.php';
include_once 'include/Webservices/Utils.php';
$Vtiger_Utils_Log = true;
$MODULENAME = 'CustomModule';
$moduleInstance = new Vtiger_Module();
$moduleInstance->name = $MODULENAME;
$moduleInstance->parent = "Tools";
$moduleInstance->save();
// Schema Setup
$moduleInstance->initTables();
// Webservice Setup
$moduleInstance->initWebservice();
// Field Setup
$block1 = new Vtiger_Block();
$block1->label = 'LBL_' . strtoupper($moduleInstance->name) . '_INFORMATION';
$moduleInstance->addBlock($block1);
// Filter Setup
$filter1 = new Vtiger_Filter();
$filter1->name = 'All';
$filter1->isdefault = true;
$moduleInstance->addFilter($filter1);
// Add field here using normal defination
$field = new Vtiger_Field();
$field->name = 'custom_name';
$field->table = $moduleInstance->basetable;
$field->label = 'Custom Name';
$field->column = $field->name;
$field->columntype = 'VARCHAR(100)';
$field->uitype = 1;
$field->displaytype = 1;
$field->presence = 2;
$field->typeofdata = 'V~M';
$block1->addField($field);
$filter1->addField($field, 2);
$field = new Vtiger_Field();
$field->name = 'assigned_user_id';
$field->label = 'Assigned To';
$field->table = 'vtiger_crmentity';
$field->column = 'smownerid';
$field->uitype = 53;
$field->displaytype = 1;
$field->presence = 2;
$field->typeofdata = 'V~M';
$block1->addField($field);
$field = new Vtiger_Field();
$field->name = 'createdtime';
$field->label = 'Created Time';
$field->table = 'vtiger_crmentity';
$field->column = 'createdtime';
$field->displaytype = 2;
$field->uitype = 70;
$field->typeofdata = 'D~O';
$block1->addField($field);
$field = new Vtiger_Field();
$field->name = 'modifiedtime';
$field->label = 'Modified Time';
$field->table = 'vtiger_crmentity';
$field->column = 'modifiedtime';
$field->displaytype = 2;
$field->uitype = 70;
$field->typeofdata = 'D~O';
$block1->addField($field);
// Sharing Access Setup
$moduleInstance->setDefaultSharing('Public');
$targetpath = 'modules/' . $moduleInstance->name;
if (! is_file($targetpath)) {
mkdir($targetpath);
$templatepath = 'vtlib/ModuleDir/6.0.0';
$moduleFileContents = file_get_contents($templatepath . '/ModuleName.php');
$replacevars = array(
'ModuleName' => $moduleInstance->name,
'<modulename>' => strtolower($moduleInstance->name),
'<entityfieldlabel>' => $field1->label,
'<entitycolumn>' => $field1->column,
'<entityfieldname>' => $field1->name
);
foreach ($replacevars as $key => $value) {
$moduleFileContents = str_replace($key, $value, $moduleFileContents);
}
file_put_contents($targetpath . '/' . $moduleInstance->name . '.php', $moduleFileContents);
}
if (! file_exists('languages/en_us/ModuleName.php')) {
$ModuleLanguageContents = file_get_contents($templatepath . '/languages/en_us/ModuleName.php');
$replaceparams = array(
'Module Name' => $moduleInstance->name,
'Custom' => $moduleInstance->name,
'ModuleBlock' => $moduleInstance->name,
'ModuleFieldLabel Text' => $field1->label
);
foreach ($replaceparams as $key => $value) {
$ModuleLanguageContents = str_replace($key, $value, $ModuleLanguageContents);
}
$languagePath = 'languages/en_us';
file_put_contents($languagePath . '/' . $moduleInstance->name . '.php', $ModuleLanguageContents);
}
Settings_MenuEditor_Module_Model::addModuleToApp($moduleInstance->name, $moduleInstance->parent);
echo $moduleInstance->name." is Created";
?>
Комментарии:
1. Здравствуйте, спасибо за ответ. Могу ли я узнать, куда помещен этот код? есть какой-либо путь? я просто создал php-файл и вставил код в папку модуля. После этого отображается ошибка ‘ Fatal error: неперехваченная ошибка: класс ‘Vtiger_Block’ не найден в D:xampphtdocsvtigercrmmodulesmodule.php:3 Трассировка стека: #0 {main} добавлено D:xampphtdocsvtigercrmmodulesmodule.php в строке 3′
2. Я думаю, что вы довольно новичок в разработке vTiger. Этот код предназначен для создания нового пользовательского модуля в vTiger7. Этот файл необходимо сохранить в корневом каталоге vTiger и выполнить его.
3. Можете ли вы предоставить мне несколько инструкций по созданию пользовательских шагов модуля. Я не получаю приведенный выше код.
4. Я обновил скрипт в соответствии с вашими требованиями только потому, что вы новичок в vTiger. Пожалуйста, скопируйте и выполните этот код через url. Сохраните этот файл в корневом каталоге crm. Это создаст новый модуль. Спасибо!
5. Каковы следующие шаги по созданию модулей после выполнения вышеуказанных кодов? Можно создавать модули со структурой, такой как представление, модули, языки …? Можем ли мы экспортировать его в zip для импорта в другие настройки?
Ответ №2:
Используйте бесплатные модули, такие как Vtiger Module Builder. эти модули используют библиотеку vtlib, и вы можете создавать новые модули через интерфейс Vtiger.