Problemas y principios de personalización de la versión en caja de Bitrix24



Muchas empresas en algún momento llegan a la conclusión de que una serie de procesos comerciales deben ser automatizados para no perder su lugar en el sol y sus clientes. Por lo tanto, los clientes están comenzando a "digitalizar" cada vez más su negocio.

Existen diferentes plataformas para este propósito, Bitrix24 es uno de los más populares. La velocidad de desarrollo y la aparición de nuevas características, soporte de alta calidad y un rico conjunto de herramientas que incluso con una personalización mínima cubre las necesidades básicas de la mayoría de las diferentes compañías, hace de esta plataforma una solución casi perfecta para los negocios.

Pero, por desgracia, no para desarrolladores, especialmente para principiantes.

Los expertos escriben artículos de capacitación sobre 1C-Bitrix y varios módulos del sistema, pero después de leerlos, los principiantes aún no tienen una imagen común y no entienden cómo funciona todo en esta plataforma. Hay artículos en Internet sobre el desarrollo de mejores prácticas en frameworks, pero se omite el desarrollo en B24. Hay empresas que han aprendido a hacer un producto de calidad, pero mantienen en secreto sus mejores prácticas.

Si desea saber cómo puede trabajar con Bitrix24, manteniendo el color original del cabello, bienvenido a cat.

Julia Silantieva es un desarrollador líder de Bitrix24 en la agencia digital de ciclo completo ITECH.

¿Qué es Bitrix24?


Probablemente, todos los que, debido a su servicio o interés, al menos una vez encontraron el desarrollo de Bitrix24, conocen el producto 1C-Bitrix: Site Management (BUS) . Este es un CMS para crear sitios web o, por definición de Bitrix, un sistema de administración de recursos de Internet.

Pero pocas personas saben que el portal corporativo Bitrix24 es un servicio escrito en 1C-Bitrix.

Bitrix24 tiene 2 soluciones: nube y caja. Se diferencian, como su nombre lo indica, por la ubicación del código del portal: en los servidores Bitrix o en el servidor del cliente. La caja da más espacio para la imaginación, pero tiene una licencia más cara y necesita soporte de servidor, y la nube es más barata, pero tiene una serie de restricciones en la personalización.

En general, puede modificar las versiones en la nube y en caja. La solución a utilizar depende de las necesidades del cliente.

En el marco de este artículo, quiero considerar con más detalle los enfoques generales para el desarrollo en la versión en caja de Bitrix24 .

Solución de caja: arquitectura del producto


Dentro del servicio se encuentra el Marco de Bitrix , que es el núcleo del sitio.

Bitrix Framework contiene módulos y componentes:

  1. Un módulo es un modelo de datos y API para acceder a estos datos. Todo el producto está estructuralmente dividido en módulos que son responsables de un área particular de aplicación: Intranet, Tareas, CRM, Procesos de negocios y otros.
  2. Un componente es un controlador y una vista para usar en una sección pública. Un componente que utiliza la API de uno o más módulos manipula datos. La plantilla del componente (vista) muestra datos en la página. Los componentes son parte de los módulos, pero resuelven un problema más específico y limitado, por ejemplo, mostrar una lista de tareas o una tarjeta de reparto. Toda la parte pública del servicio se basa en una llamada desde la página de varios componentes. Por ejemplo, una página de lista de ofertas de CRM consta de componentes de menú, filtro y lista.



El núcleo de Bitrix Framework son los archivos ubicados en el directorio / bitrix . No puede realizar cambios en el kernel (en general. Nunca. Ni siquiera lo piense ) por varias razones:

  • al actualizar el sistema, los cambios realizados se borrarán;
  • ;
  • , — , .

Sin embargo, hay otra gran advertencia.

El portal Bitrix24, como cualquier otro sitio escrito en 1C-Bitrix, incluye una plantilla de sitio, una parte pública (es decir, secciones y páginas), componentes y plantillas de componentes. Y difiere de un sitio normal en que al instalar actualizaciones, todo lo anterior también se actualiza. Por lo tanto, la parte pública, la plantilla de Bitrix24 y los componentes estándar también pueden considerarse el núcleo de Bitrix24 . Y esto significa que tampoco puede hacer cambios en ellos (al menos porque se eliminarán durante la próxima actualización).



Pero todavía hay lagunas, y es real hacer cambios sin dolor.

Capacidad de actualización


Las actualizaciones de productos son muy importantes. Resuelven problemas de seguridad, cierran errores existentes (sin embargo, a veces producen otros nuevos allí mismo :)). A veces llegan nuevos bollos geniales con actualizaciones.

Los principales productos nuevos de Bitrixoid se presentan en sus conferencias, que se celebran cada seis meses (la última se realizó en línea en abril ), pero se lanzan con parches casi todos los días. Mantenerse al día ayuda a las actualizaciones por correo electrónico. Puede conectarlo en el panel de administración de cualquier portal en Bitrix24: Marketplace -> Actualización de plataforma -> Avanzado -> Suscribirse para recibir información sobre actualizaciones por correo .



Bitrix aconseja instalar actualizaciones tan pronto como estén disponibles. Pero recomendaría no siempre seguir este consejo. Es aconsejable instalar actualizaciones en momentos de carga mínima en el servidor, por ejemplo, los fines de semana o por la noche, de acuerdo con la ley de Murphy, en el momento en que necesita hacer todo de forma rápida y silenciosa, Bitrix se bloquea con un error al actualizar. :) Por supuesto, esto sucede con poca frecuencia, pero no hará daño jugar de forma segura. Y no olvide hacer una copia de seguridad antes de comenzar las actualizaciones.

Principios de personalización


Todo el desarrollo debe llevarse a cabo en una carpeta - / local .

Para agregar su funcionalidad al sitio escrito en BUS, solo busque el componente que necesita, cópielo en la carpeta / local , personalice la clase y la plantilla del componente.

En Bitrix24, este enfoque es fundamentalmente incorrecto.

En primer lugar, si copia la plantilla en el directorio / local , el sistema siempre la usará en lugar del estándar. Esto significa que después de la próxima actualización, el cliente no verá nuevas funciones que podrían agregarse a este componente, y los errores, si los hay, no se solucionarán. Mantener manualmente la relevancia de los componentes es difícil, y si los cambios fueron globales, entonces imposible.

En segundo lugar, los componentes del servicio son un sistema completo y su código está escrito bajo el supuesto de que el sistema original se utiliza en todo el sistema. Esto significa que una plantilla personalizada puede generar incompatibilidad de información con el resto del sistema y convertirse en una fuente de errores difíciles de detectar.

¿Qué es, entonces, un desarrollador que necesita cambiar o agregar algún tipo de lógica?

Hay varias soluciones al problema:

  • aprovechar ciertos puntos de inserción permitidos en la interfaz y funciones diferidas;
  • cambiar el resultado de la ejecución del componente y agregarle sus propios estilos y scripts;
  • cree su propio proceso comercial o configure robots;
  • vincularse a eventos en el lado de PHP o JS;
  • cree su propio tipo de campo (por ejemplo, un widget);
  • escribe tu solicitud;
  • Escribe tu módulo.

Para cada tarea, debe elegir la herramienta más adecuada.

Local


La carpeta principal donde el desarrollador puede y debe ejecutar sus manos es / local . Inicialmente, no está en el proyecto, por lo que puede llenar la carpeta a su discreción, pero en términos de rutas es importante seguir las instrucciones de Bitrix, de lo contrario, la plataforma no verá componentes y módulos personalizados.

Ofrecemos una estructura de carpetas universal / local :



  • Las actividades contienen acciones de procesos de negocio.
  • Los componentes contienen componentes escritos por sí mismos (¡no deben confundirse con los componentes personalizados de Bitrix!).
  • css , fuentes , imágenes , js contienen los archivos y recursos correspondientes.
  • modules . , .
  • php_interface php-. ajax-, , , .
    • init.php — Bitrix Framework. . , , . init.php , , , init.php . , , __autoload composer.

  • templates .
  • tools cron .

La estructura es muy flexible: cuando es necesario (por ejemplo, cuando aparecen nuevas tareas), puede agregar nuevas secciones a la carpeta, en lugar de perder tiempo desarrollando una nueva estructura.

Al procesar carpetas, siempre se da prioridad a la carpeta / local sobre / bitrix . Esto significa que si las plantillas del sitio con el mismo nombre se encuentran en / local / templates / y / bitrix / templates / , la plantilla de / local se conectará .

De aquí se desprende una observación importante : para que Bitrix comprenda que es necesario tomar plantillas de componentes personalizadas de la carpeta / local , debe tener una estructura determinada:

/ local / templates / site_template / components / namespace / component_name / template_name / .

Al mismo tiempo, la carpeta de plantilla del sitio en / local (estamos hablando de Bitrix24, no de BUS) debe contener una plantilla creada por Bitrix ( / bitrix / templates / bitrix24 / ). Solo en este caso, el sistema comprenderá que es necesario conectar el componente desde / local .

¿Qué más es importante tener en cuenta al diseñar?


1. Todas las variables de idioma deben almacenarse en los archivos lang correspondientes. El archivo de idioma es un script php que almacena traducciones de frases de idiomas a un idioma en particular. Este script consta de una matriz $ MESS, cuyas claves son identificadores de frases de lenguaje, y los valores son traducciones al idioma correspondiente.

Cada idioma tiene su propio conjunto de archivos de idioma almacenados en los subdirectorios / lang / de la estructura de archivos del sistema o módulo.

¿Por qué es importante llevar todos los textos en archivos separados? Al traducir su portal a otro idioma, bastará con recopilar y traducir solo frases de los archivos de idioma, mientras crea nuevas secciones para el idioma correspondiente. No será necesario buscar lugares donde puedan aparecer textos en el código y realizar cambios directamente en el código del portal.

Lea más sobre cómo usar archivos de idioma en un documento oficial .

2. Cuando trabaje con componentes, no necesita acceder a la base de datos directamente. El concepto de trabajar con el producto implica trabajar con datos a través de funciones API. La estructura de datos puede variar de una versión a otra, y las funciones conservan la compatibilidad con versiones anteriores. Bitrix desaconseja firmemente el uso de consultas directas a la base de datos, ya que esto puede violar la integridad de los datos y provocar la inoperancia del sistema.

Además, si estamos hablando de las tablas del sistema de Bitrix Framework en sí, esto no solo no es bienvenido, sino que, en principio, no es compatible. Es necesario trabajar con ellos a través de la API del sistema, ya que la estructura física de la base de datos puede cambiar, y el trabajo de incluso la API más antigua está garantizada.

3. Las versiones funcionan en un proyecto utilizando un sistema de control de versiones. Al mismo tiempo, debido a las peculiaridades del desarrollo en Bitrix, tiene sentido proporcionar una "peculiaridad" en la configuración del repositorio para el proyecto: separar los archivos principales y los personalizados.

4. Lee los muelles. En muchos problemas locales, especialmente comunes con 1C-Bitrix, puede encontrar artículos o documentación por separado. Para los desarrolladores que están acostumbrados a google inmediatamente en inglés, será una sorpresa que la mayoría de los artículos estén escritos en ruso. :)

Y debe recordar la regla de oro a la que los desarrolladores experimentados aconsejan adherirse: menos código, menos errores .

Total


Hoy puede observar el desequilibrio entre la oferta y la demanda en el mercado de desarrollo de Bitrix24. La necesidad de desarrolladores está creciendo rápidamente, y muchos expertos no quieren involucrarse con el producto de Bitrix, ya que están familiarizados con su creación más antigua y prácticamente muerta: BUS.

Pero el demonio no es tan terrible, e incluso los desarrolladores novatos podrán acostumbrarse y producir un producto de alta calidad, que "no es una pena que los niños muestren" © habr usuario.

All Articles