盒装Bitrix24的定制问题和原则



许多公司在某个时候得出的结论是,许多业务流程需要自动化,以免失去其在阳光下和客户中的地位。因此,客户越来越多地开始“数字化”他们的业务。

有多种平台可用于此目的,Bitrix24是最受欢迎的平台之一。随着新功能,高质量支持和丰富工具集的发展和出现的速度,即使只需最少的自定义,它也可以满足大多数不同公司的基本需求,这使得该平台成为业务的近乎完美的解决方案。

但是,可惜的是,不适合开发人员,尤其是初学者。

专家们在1C-Bitrix和系统的各种模块上写了培训文章,但是在阅读它们之后,初学者仍然没有共同的印象,也没有理解在此平台上所有功能的工作原理。互联网上有关于框架最佳实践开发的文章,但是绕过了B24的开发。有些公司已经学会了制造优质的产品,但是他们将最佳做法保密。

如果您想知道如何在保持原始发色的同时使用Bitrix24,欢迎使用cat。

Julia Silantieva是ITECH全周期数字代理机构Bitrix24的领先开发商。

什么是Bitrix24


可能是,每个因服务或兴趣而至少一次遇到Bitrix24开发的人都知道产品1C-Bitrix:站点管理(BUS)。这是用于创建网站的CMS,或者根据Bitrix本身的定义,用于创建Internet资源管理系统。

但是很少有人知道Bitrix24企业门户是使用1C-Bitrix编写的服务。

Bitrix24有2个解决方案:云和盒子。顾名思义,它们的区别在于门户网站代码的位置:在Bitrix服务器上还是在客户端服务器上。盒子提供了更多的想象空间,但是许可证价格更高,并且需要服务器支持,而云计算更便宜,但是在定制方面有很多限制。

通常,您可以修改云版本和盒装版本。使用哪种解决方案取决于客户的需求。

在本文的框架中,我想更详细地考虑在Bitrix24盒装版本上进行开发的一般方法

盒子解决方案:产品架构


服务内部是Bitrix框架,它是站点的核心。

Bitrix框架包含以下模块和组件:

  1. 模块是用于访问此数据的数据模型和API。整个产品在结构上分为负责特定应用领域的模块:内联网,任务,CRM,业务流程等。
  2. 组件是用于公共部分的控制器和视图。使用一个或多个模块的API的组件可处理数据。组件模板(视图)在页面上显示数据。这些组件是模块的一部分,但是可以解决更狭窄,更具体的问题,例如,显示任务列表或交易卡。服务的整个公共部分都建立在来自各个组件页面的调用上。例如,CRM交易列表页面由菜单,过滤器和列表组件组成。



Bitrix框架的核心是位于/ bitrix目录中的文件由于以下几个原因,您无法更改内核(通常。永远不要。甚至不要考虑它):

  • 更新系统时,所做的更改将被删除;
  • ;
  • , — , .

但是,还有另一个大警告。

与1C-Bitrix编写的任何其他站点一样,Bitrix24门户包含站点模板,公共部分(即部分和页面),组件和组件模板。它与常规站点的不同之处在于,在安装更新时,上述所有内容也会被更新。因此,公共部分,Bitrix24模板和标准组件也可以视为Bitrix24的核心这意味着您也无法对其进行更改(至少是因为它们将在下次更新中删除)。



但是仍然存在漏洞,毫不费力地进行更改是真实的。

可更新性


产品更新非常重要。他们解决了安全问题,关闭了现有的错误(但是,有时它们会在那里产生新的错误:)。有时,新的超酷面包会随着更新而出现。

每六个月举行一次会议,介绍主要的Bitrixoid新产品(最近一次是在四月在网上举行),但几乎每天都有补丁发布。与时俱进有助于电子邮件更新。您可以在Bitrix24上任何门户的管理面板中将其连接:Marketplace-> Platform Update- > Advanced-> Subscribe以通过邮件接收有关更新的信息



Bitrix建议尽快安装更新。但是,我建议不要始终遵循此建议。建议在服务器上负载最小的时候(例如,在周末或晚上)安装更新-根据Murphy的法律,当您需要快速,安静地进行所有操作时,Bitrix会在更新时崩溃并出现错误。:)当然,这种情况很少发生,但是安全起球不会有任何伤害。并且不要忘记在开始更新之前进行备份。

定制原则


所有开发都应在一个文件夹- / local中进行

要将功能添加到以BUS编写的站点中,只需找到所需的组件,将其复制到/ local文件夹,自定义类和组件模板即可。

在Bitrix24,这种方法从根本上是错误的。

首先,如果将模板复制到/ local目录,则系统将始终使用它而不是标准模板。这意味着在下一次更新之后,客户端将看不到可以添加到该组件的新功能,并且错误(如果有的话)也不会得到修复。手动维护组件的相关性很困难,如果更改是全局的,则不可能。

其次,服务组件是一个完整的系统,其代码是在假设整个系统都使用原始系统的前提下编写的。这意味着定制的模板可能导致信息与系统的其余部分不兼容,并成为难以捕获的错误的来源。

那么,需要更改或添加某种逻辑的开发人员又是什么呢?

有几种解决方案:

  • 利用某些允许插入接口和延迟功能的点;
  • 更改组件执行的结果,并为其添加自己的样式和脚本;
  • 创建自己的业务流程或设置机器人;
  • 绑定到PHP或JS方面的事件;
  • 创建自己的字段类型(例如,小部件);
  • 编写您的应用程序;
  • 编写您的模块。

对于每个任务,您必须选择最合适的工具。

本地


开发人员可以并且应该使用双手的主要文件夹是/ local最初,它不在项目上,因此您可以自行决定是否填充文件夹,但是就路径而言,遵循Bitrix的说明很重要,否则平台将看不到自定义组件和模块。

我们提供通用的文件夹结构/本地



  • 活动包含业务流程的动作。
  • 组件包含自写的组件(不要与自定义的Bitrix组件混淆!)。
  • cssfontsimagesjs包含相应的文件和资源。
  • modules . , .
  • php_interface php-. ajax-, , , .
    • init.php — Bitrix Framework. . , , . init.php , , , init.php . , , __autoload composer.

  • templates .
  • tools cron .

该结构非常灵活:在必要时(例如,当出现新任务时),您可以将新的部分添加到文件夹中,而不用花费时间开发新的结构。

处理文件夹时,始终将/本地文件夹的优先级高于/ bitrix。这意味着,如果具有相同名称站点模板位于/ local / templates // bitrix / templates /中,则来自/ local的模板将被连接

从这里可以得出一个重要的观察结果:为了使Bitrix理解必须从/ local文件夹中获取自定义的组件模板,它必须具有某种结构:

/ local /模板/ site_template /组件/名称空间/ component_name / template_name /

同时,/ local(我们在谈论Bitrix24,而不是BUS)中的站点模板文件夹应包含由Bitrix创建的模板(/ bitrix / templates / bitrix24 /)。仅在这种情况下,系统才会了解需要从/ local连接组件

设计时要记住的其他重要事项是什么?


1.所有语言变量必须存储在相应的lang文件中。语言文件是一个php脚本,用于存储语言短语到特定语言的翻译。这个脚本由一个$ MESS数组组成,其键是语言短语的标识符,值是翻译成相应语言的语言。

每种语言都有自己的一组语言文件,存储在系统或模块的文件结构的子目录/ lang /中

为什么将所有文本放入单独的文件中很重要?将门户网站翻译成另一种语言时,仅需收集和翻译语言文件中的短语,同时为相应语言创建新部分就足够了。无需寻找代码中可能出现文本的地方,而直接对门户网站代码进行更改。

正式文档中阅读有关如何使用语言文件的更多信息

2.使用组件时,不需要直接访问数据库。使用产品的概念涉及通过API函数处理数据。数据结构可能因版本而异,并且功能保持向后兼容。 Bitrix强烈建议不要使用直接数据库查询,因为这可能会破坏数据完整性并导致系统无法操作。

而且,如果我们谈论Bitrix框架本身的系统表,这不仅不受欢迎,而且原则上不支持。有必要通过系统的API与他们合作,因为数据库的物理结构可以改变,并且即使是最古老的API也可以保证工作。

3.使用版本控制系统对项目进行版本控制。同时,由于Bitrix开发的特殊性,在为项目设置存储库时提供“特殊性”是很有意义的:分离核心文件和自定义文件。

4.阅读基座。在许多本地问题上,尤其是1C-Bitrix常见的问题,您可以找到单独的文章或文档。对于习惯于立即以英语浏览google的开发人员来说,大多数文章都是用俄语编写的,这真是令人惊讶。:)

并且您需要记住经验丰富的开发人员建议遵循的黄金法则:减少代码,减少错误


今天,您可以观察到Bitrix24在开发市场中供需之间的不平衡。对开发人员的需求迅速增长,并且许多专家不愿参与Bitrix的产品,因为他们熟悉其最古老且实际上已经死了的想法-BUS。

但是魔鬼并没有那么可怕,即使是新手开发人员也将能够习惯并生产出高质量的产品,“对男孩们并不示威”©user habr。

All Articles