Menú
Está libre
registro
hogar  /  Internet/ Sección sin cabeza php. Confesión del odiador de Bitrix

Sección sin cabeza php. Confesión del odiador de Bitrix

Las plantillas de Bitrix se pueden dividir en varios tipos:
  • Plantillas de componentes comunes y complejos 2.0
  • Plantillas de sitios web
  • Otras plantillas de entidad ( envíos postales, lanzamientos de boletines, formularios web, generadores de exportación y mucho más)

Las plantillas de componentes incluso tienen la capacidad de utilizar motores de plantillas. En principio, puede conectar cualquier motor de plantilla, pero no herramientas auxiliares no. Si alguien lo necesita, tengo un par de enlaces a extensiones para ramitas y cuchillas que funcionan y se utilizan bastante en la producción. Pero incluso aquí los Bitrixoids se han pervertido. El motor de plantillas solo se puede utilizar con componentes. No funcionará conectar el motor de plantillas al renderizador de la plantilla del sitio u otras entidades, porque no hay ningún renderizador allí.

En las plantillas de componentes, hay otro momento molesto con su ubicación. El componente está conectado mediante una construcción simple.
$ APLICACIÓN-> IncluirComponente ("bitrix: catalog.section", "template_name",);
El segundo parámetro es el nombre de la plantilla del componente. Entonces dependiendo de diferentes condiciones, la ubicación de esta plantilla puede estar en los lugares más inesperados:

  • bitrix / components / bitrix / catalog.section / templates / nombre_plantilla
  • local / components / bitrix / catalog.section / templates / nombre_plantilla
  • bitrix / templates / .default / components / bitrix / catalog.section / template_name
  • bitrix / templates / site_template / components / bitrix / catalog.section / template_name
  • local / templates / .default / components / bitrix / catalog.section / template_name
  • local / templates / site_template / components / bitrix / catalog.section / template_name
  • bitrix / components / bitrix / catalog / templates / .default / bitrix / catalog.section / template_name
  • local / templates / site_template / components / bitrix / catalog / .default / bitrix / catalog.section / template_name
Y no he enumerado todas las opciones ...

Una plantilla de sitio puede verse como un conjunto de archivos: header.php, footer.php (sí, el sitio debe tenerlos), description.php ( descripción del sistema plantilla de sitio), template_styles.css (estilos de plantilla de sitio), un directorio con plantillas de componentes y un montón de archivos menos importantes. Y eso es todo. Y no lo influyas de ninguna manera, no hagas nada al respecto. No se puede recoger el motor de plantillas.

No hay nada que decir sobre otras plantillas. O simplemente se almacenan en la base de datos en forma de diseño con la inclusión de algunos datos "variables", o es una estupidez archivo php, que hace todo el trabajo, desde la obtención de parámetros de la base de datos hasta la visualización de información. Por ejemplo, puede consultar el generador de archivos YML para el mercado. No tiene sentido ponerlo aquí, simplemente porque es lo suficientemente grande, alrededor de 2k líneas. Quien lo necesite lo buscará en Google, se encuentra en /bitrix/modules/catalog/load/yandex_run.php

Naturaleza del archivo

Como quedó claro anteriormente, en la arquitectura Bitrix no todo es muy bueno. Pero Bitrix también tiene un aspecto más importante de la arquitectura.
Bitrix es la mitad de un CMS de archivo. Muchas cosas están controladas por algún tipo de archivos:

  • Necesita una página: cree un archivo
  • Necesita un conjunto de páginas: cree un archivo y conecte un componente que funcione con infoblocks
  • Necesita establecer un título para la página - editar el archivo
  • Debe establecer un título para todas las páginas de la sección: cree un archivo especial.sección.php en la raíz de esta sección
  • Necesita editar los derechos - edite el archivo.access.php
  • Configuración antes de la inicialización del sistema: en los archivos dbconn.php, .settings.php y .settings_extra.php
  • result_modifier.php, component_epilog.php, init.php, .parameters.php, .description.php ....

Y hay muchos archivos especiales de este tipo esparcidos por Bitrix. Por un lado, esto da cierta flexibilidad a la hora de trabajar con el sistema. Por otro lado, puede convertirse en una agonía tanto para el desarrollador como para el administrador del sitio. Los archivos de página a veces se convierten en un lío de código php, diseño y componentes de complementos. Como resultado, el editor visual puede analizar incorrectamente este archivo y, al editarlo, puede filtrar fácilmente etiquetas php en algunos lugares, lo que conducirá a la inoperancia de la página. Usted dice: ¿no es necesario escribir código php en tales archivos? Sí, lo sé. Pero Bitrix muy a menudo y no tiene alternativa te obliga a hacer esto.
Y en la cabeza necesita mantener información constante sobre qué tipo de archivos son y qué datos pueden contener. Los diferentes archivos deben contener diferentes datos con una estructura diferente, y debe recordarlos para cada opción. Es difícil buscarlo en la documentación cada vez.

Además de lo anterior

Puede quejarse interminablemente de lo mal que está todo organizado en Bitrix. En mi opinión, todas estas quejas se pueden caracterizar por una frase: "de alguna manera no hasta el final". Y de hecho, si de repente Bitrixoids anuncia alguna característica, entonces de alguna manera no la lanzarán por completo, no la terminarán, no la traerán a la mente. Hay muchos ejemplos:

  • implementado ORM: no lo completó, no puede usarlo al máximo
  • hizo un autocargador, solo funciona en módulos, y no por estándares
  • hizo posible conectar el motor de plantillas, pero no puede usarlo en todas partes, y no completamente
  • etc. etc.

En pocas palabras, intentaré caracterizar el resto de problemas que tenemos que afrontar cada día.

Panel de administrador

Si alguien trabajó con el panel de administración, creó sus páginas en la parte administrativa de la forma en que Bitrix sugiere hacerlo, me entenderá. Es simplemente un infierno. Para aquellos que no están al tanto, Bitrix sugiere usar un archivo de fideos para cada página. Por ejemplo, la página para la visualización detallada de pedidos en el panel de administración realizada por los desarrolladores de Bitrix ocupa 4k líneas. Mi IDE comienza a ralentizarse al ver el contenido de este archivo. Ahí tienes php, js y html. Bueno, al menos nos deshicimos de SQL, aunque estoy seguro de que está en las otras páginas de administración.
Y no está claro qué impedía que las páginas administrativas funcionaran con los mismos componentes. Simplemente no hay forma de personalizar la mayoría de las páginas de administración. En el caso de los componentes, esto podría hacerse en poco tiempo.
Por cierto, gente amable ha creado un módulo que le ayudará a crear páginas administrativas.

marco js

Bitrix tiene un componente js que actúa como una especie de marco de cliente. A ninguno de los desarrolladores le gusta por varias razones:
  • esta casi indocumentado
  • el es monstruoso
  • duplica en gran medida jquery, que es familiar para muchos

Bitrix lo usa con mucha frecuencia en sus componentes, lo que causa aún más enojo entre los desarrolladores. El núcleo de esta biblioteca en forma reducida es de 85 kb, que es muy grande. No podrá evitar conectarlo si desea utilizar todas las capacidades de Bitrix (compuesto, gestión de activos).

Espíritu de copiar y pegar

Recientemente, cada vez menos, pero aún con bastante frecuencia, Bitrix hace algo para copiar y pegar. Si desea modificar el trabajo de un componente, copie y pegue. Si desea crear su propia plantilla de descarga, copie la copia del sistema y finalice. Si desea hacer casi la misma plantilla que tiene, cópiela, péguela y cámbiela un poco. Y de esto incluso se habla en cursos para desarrolladores principiantes. No tengo palabras.

Gestión de activos y CDN

Me gusta mucho la forma de administrar los recursos en Bitrix. En principio, es posible registrar un conjunto de "bibliotecas" específicas. Cada biblioteca es un conjunto de archivos css / js, que pueden depender de otras bibliotecas. Si conecta una biblioteca a la página, antes de conectarla, todas las dependencias se resolverán y todas las bibliotecas dependientes se insertarán en la página. Todo parece estar bien, solo se insertará cada recurso en el formulario un archivo separado en una secuencia de comandos o etiqueta de enlace. Y gracias a esto, hay sitios que tienen entre 30 y 50 scripts y la misma cantidad de archivos de estilo conectados.
Mierda-pregunta, dijeron en Bitrix, e hicieron un tic mágico que combina todos estos archivos en uno. Y hubo sitios donde en lugar de 50 scripts había 2, cada uno de 300-500kb. Hace algún tiempo, esta fusión funcionaba con errores y fusionaba los mismos recursos varias veces, pero ahora parece que se ha solucionado.
Y luego salió Bitrixoids: hicieron posible cargar todos los recursos en un servidor CDN. Que para siempre se cae ...
Luego vino Google Pagespeed Insights, que recomendó dejar todos los recursos al final de la página. Y en Bitrix, volvieron a hacer un tic mágico, que omite estúpidamente todos los recursos del cuerpo, si no están marcados con un atributo especial.
Y también distribuyen versiones minimizadas de sus scripts junto con la caja, que se conectan cuando se usa otra casilla de verificación mágica en el panel de administración.
En general, no hay scss para ti, no TypeScript. Si desea administrar adecuadamente los recursos, no use el sistema Bitrix incorporado, use el paquete web, que puede hacer amigos fácilmente con Bitrix.

Multi-sitio / multilingüe

Este es probablemente el peor dolor de cabeza de los desarrolladores que ha estado ocurriendo desde el inicio del producto. No puede simplemente tomarlo y crear un sitio web multilingüe. Y si necesita un catálogo multilingüe con diferentes precios y monedas, entonces se convierte en harina, por lo que también debe pagar una gran suma (tendrá que desembolsar para comprar una licencia adicional para la siguiente versión del sitio en el idioma) .
Si está creando un sitio multilingüe y multidivisa, prepárese para el hecho de que Bitrix resistirá esto de manera muy agresiva. La configuración de varios sitios está descentralizada en todo el área de administración. Cada entidad en el panel de administración tiene su propia dependencia de la versión de idioma del sitio. Es posible que algunas entidades no admitan las dependencias del sitio / idioma en absoluto, y algunas solo tienen un enlace inequívoco al idioma, por lo que tendrá que duplicar esta entidad y luego admitirla.
En la versión básica, para que el bloque de información funcione en varios idiomas, tendrá que crear un duplicado de este bloque de información. Pero en la práctica, nadie hace esto y trata de idear sus propias formas de almacenar una entidad de forma centralizada, extendiendo sus atributos dependientes del idioma a otros almacenamientos.
No puede establecer el idioma predeterminado para la localización. Si tiene una variable de idioma que describe una frase en ruso, y esta variable de idioma no está en inglés, se mostrará una cadena vacía en el sitio en inglés y no podrá influir en esto de ninguna manera (en muchos casos, podría dejar la frase rusa para que no haya vacíos).

Mecanismo de gestión de derechos

Somos muy complicados con este subsistema. A menudo es difícil averiguar por qué otorgó los derechos para ver una entidad, pero el usuario no puede usarlos. Por ejemplo, para otorgar el derecho a editar un bloque de información, debe otorgar acceso al directorio / bitrix / admin, otorgar derechos para un bloque de información específico y otorgar derechos en el módulo principal. Deben realizarse demasiadas operaciones para otorgar permisos a una entidad. Y si no hay suficientes derechos, entonces sin hurgar en el código fuente, no podrá entender por qué.

Configurando

Bitrix no tiene un concentrador centralizado que le permita administrar la configuración del sistema. La configuración vuelve a estar descentralizada en todo el sistema. Las opciones están disponibles en la configuración del módulo, en la configuración de los componentes, en COption (no se mueven al panel de administración). En el panel de administración, las opciones de un módulo se pueden dividir en 3-4 páginas diferentes, que se encuentran en lugares completamente diferentes. urlrewrite se puede editar a través del panel de administración. Ahora también .settings y.settings_extra. A veces no está del todo claro cuáles de ellos son de mayor prioridad, muy a menudo no hay suficiente explicación para las opciones, la relación no está clara. No existe una forma nativa de compartir la configuración entre desarrolladores.
La configuración puede ser muy ilógica. A veces llega al punto de lo absurdo ... mire el componente bigdata: ¿puede una persona no preparada ser capaz de personalizarlo?

Integración con 1C

Este es el elemento de la lista de características de Bitrix que un gran número de clientes busca. Bitrix promete configurar una integración de sitio bidireccional con 1C en 2 clics, que entregará instantáneamente contenido y documentos de un sistema a otro.
Sí, realmente lo es, pero con algunas salvedades.
En primer lugar, para hacer la integración lista para usar sin esfuerzos adicionales, debe hacer todo exactamente como está escrito en la documentación de Bitrix: cree un directorio en el sitio de acuerdo con las reglas que ofrece Bitrix y cree un catálogo en 1C que Bitrix requiere. Idealmente, cree todo desde cero, y luego tal vez todo funcione para usted desde el primer momento.
En segundo lugar, Bitrix no es compatible con todas las configuraciones de 1C listas para usar. Vale la pena leerlo de antemano
En tercer lugar, no existe un mundo ideal. Por lo general, un cliente que quiere un sitio web ya tiene un negocio minorista, lo que significa que ya tiene 1C, que es un enorme bote de basura. Y esta basura se puede tirar al sitio. Y para que el sitio no reciba el mismo bote de basura, se requiere modificar significativamente el mecanismo de intercambio.
Muy a menudo, los requisitos del cliente difieren mucho de la visión del producto que formó el equipo de Bitrix, y luego la modificación del mecanismo de intercambio puede ser bastante costosa, en términos de intensidad de trabajo comparable al desarrollo de un módulo de intercambio único para un caso específico.
Por lo tanto, no es necesario que se haga la ilusión de que podrá integrar fácilmente el sitio con 1C. Estas son todas las intrigas de los especialistas en marketing.

Mejorar el intercambio con 1C también es un tema aparte. La clase \ CIBlockCMLImport se encarga de organizar el intercambio del directorio - 5.7k líneas. Uno de los métodos principales, que generalmente requiere la extensión - \ CIBlockCMLImport :: ImportElement, contiene más de 1k líneas. Es suficiente heredarlo una vez, actualizar el producto un par de veces durante mucho tiempo y puede obtener un intercambio que no funciona con 1C. Por lo tanto, los desarrolladores a menudo no entran en esta clase e intentan entrar de alguna manera en el proceso de importación utilizando controladores de eventos. Trabajar con controladores de eventos en Bitrix, especialmente en el módulo infoblock, tampoco es una experiencia muy agradable, aunque solo sea por el hecho de que los eventos del mismo tipo no se organizan de manera uniforme y algunos eventos simplemente no son suficientes.
En general, esta situación es tan triste como antes.

Inconsecuencia

A veces me parece que los desarrolladores de diferentes módulos no se comunican realmente entre sí. Al estudiar el código fuente del kernel, te encuentras con soluciones muy heterogéneas que podrían ejecutarse en el mismo motor, pero por alguna razón se implementan de diferentes maneras.
Por ejemplo, puede tomar las propiedades de los elementos de infoblocks y UserFields. Tanto la una como la otra entidad son, de hecho, un campo adicional para otra entidad. Tiene un tipo, un significado y una descripción. El valor se almacena en una (s) tabla (s) separada (s) de la base de datos, tienen una interfaz de acceso a datos aproximadamente similar. Entonces, ¿por qué no hacer que tengan la misma interfaz?
A finales de marzo, el módulo de venta se actualizó a ultima versión, y allí también prometieron propiedades arbitrarias por encargos. ¿Existe ahora una nueva tercera interfaz para trabajar con propiedades extendidas de una entidad?

Bitrix24

Por lo general, este es un tema de conversación independiente. La confusión surge a menudo sobre la base de este sistema. Hay 2 versiones de B24: SaaS y Standlone. Existe un mercado para B24, ¡pero solo contiene aplicaciones para la versión SaaS! Si tiene una versión en caja comprada por 200 piezas, no podrá instalar aplicaciones tan populares como el creador de documentos y, en general, no podrá instalar ninguna aplicación del mercado Bitrix24 en su Bitrix24. He aquí una paradoja.
En cambio, un mercado de la versión normal estará disponible en su Bitrix24. Existen muchas más soluciones, pero se concentran principalmente en la gestión del sitio y no en B24.

Bitrix24, como me dijeron en el departamento apoyo técnico, es un sistema completo. Si interfiere con el trabajo de los componentes estándar del sistema, esté preparado para que esta funcionalidad se interrumpa con las actualizaciones posteriores. Bitrix no contará con usted para finalizar los componentes del portal, a pesar de que envían oficialmente a sus clientes a los socios.

Por cierto, para refinar los componentes en versión en caja B24 es otro problema. Componentes que generan código js que con usando ajax apela a código php que genera html + js en respuesta. Esta es una mezcla infernal en la que realmente no quieres sumergirte.

Documentación

La documentación de Bitrix está por detrás del desarrollo de productos entre 1 y 1,5 años. El código está muy mal cubierto por phpDoc "s, y a menudo el comentario delante de la clase es sólo" para mostrar ", y se genera automáticamente en el IDE.
El estilo mismo de presentación de la documentación en fuentes oficiales es a menudo demasiado "libre", y el contenido de algunos artículos en la documentación puede no tener nada que ver con Bitrix en sí.
El curso del desarrollador tiene mucha información, pero el formato en el que se le presenta al desarrollador las capacidades del sistema no proporciona el nivel de percepción que se requiere. Si va al Libro de recetas de Symfony, entonces todo está dispuesto en los estantes, todos los aspectos necesarios se describen según la versión. Mientras que en Bitrix, el curso de capacitación del desarrollador contiene, según qué principio, información estructurada sobre los núcleos antiguos y nuevos, que primero se presenta por separado y luego se mezcla, de lo cual los principiantes tienen dolor de cabeza.

Organización del proceso de desarrollo

Debido a la especificidad del sistema, no es tan fácil organizar un proceso de desarrollo conveniente. No el mas versión nueva la edición Business (que estaba disponible) después de la instalación toma, piénselo, casi 530 megabytes
$ du -s * | sort -nr | cut -f 2- | while read a; do du -hs $ a; done 523M bitrix 204K upload 64K bitrixsetup.php 56K desktop_app 20K readme.html 20K license.html 4.0K web. config 4.0K urlrewrite.php 4.0K readme.php 4.0K license.php 4.0K install.config 4.0K index.php
Una buena mitad de este volumen son binarios e instaladores, que, en general, no son necesarios para el control de versiones. En términos generales, se acostumbra no versionar el kernel de bitrix. Los desarrolladores de Bitrix, por así decirlo, garantizan la integridad del kernel ellos mismos, administran las dependencias de versiones de diferentes módulos durante las actualizaciones. Pero esto inmediatamente conlleva al menos un gran inconveniente: es imposible implementar un proyecto que funcione completamente con un comando del control de versiones, debe ensamblarlo en partes: obtenga la fuente del kernel de la copia de seguridad de bitrix y la fuente de los desarrolladores de git .
La base tampoco está bien. Si usted mismo puede usar las migraciones durante el desarrollo, Bitrix lanza actualizaciones a la base de datos utilizando scripts comunes que no puede controlar. Por lo tanto, durante las actualizaciones, aún tendrá que transferir las copias de seguridad de la base de datos desde el host de desarrollo central a otros desarrolladores.
La gente amable, nuevamente, vio las herramientas que ayudan a organizar todo esto, pero desafortunadamente, todavía no es posible obligar a Bitrix a seguir estas reglas.
Oficialmente, Bitrix le permite tener 2 copias de un kit de distribución. Uno es para la producción, el otro es para el desarrollo. Si tiene varios desarrolladores en un proyecto, entonces está, por así decirlo, fuera de la ley) De hecho, es suficiente cortar las conexiones entrantes y salientes desde / hacia www.bitrixsoft.com para la máquina Bitrix, y luego pueden remachar tantas copias del desarrollo como desee, simplemente no podrán actualizarse por sí mismas.

Colegas

Y última pregunta que me gustaría tocar.
Debido a que Bitrix tiene un umbral de entrada bajo, hay mucho personal no calificado entre las empresas que brindan servicios en este mercado. Vi muchos proyectos diferentes durante mi carrera (más de cien en total), ejecutados en 1C-Bitrix. Puedo decir con confianza que el 95% de ellos se cometieron "pifias". Muy raramente hubo proyectos, para cuyo desarrollo se sintió un enfoque, pero estos fueron solo unos pocos. Todo esto es muy triste.

conclusiones

Por supuesto, no se pueden considerar todas las desventajas de un artículo. Todos los días te encuentras con algunas pequeñas cosas que interfieren con tu trabajo todos los días. Pero es simplemente imposible considerar todas esas nimiedades, y probablemente nada.

Qué conclusiones se pueden sacar aquí. Bitrix es un sistema extremadamente complejo debido a que tiene una arquitectura mal concebida, muchas fallas que continúan viviendo en el producto durante mucho tiempo. Por otro lado, Bitrix es un sistema bastante simple que requiere un nivel de habilidad mucho menor para comenzar, a diferencia de los marcos.
Dar soporte a este producto es una tarea muy ingrata en comparación con productos como Symfony, Laravel, Yii. Al producto le gusta mucho poner un radio en las ruedas de desarrolladores experimentados y sin experiencia, lo que, a su vez, puede afectar el costo de los servicios de desarrolladores experimentados para Bitrix.

¿Me arrepiento de haber pasado tanto tiempo trabajando con este sistema? Más bien sí que no. Sería más prudente dedicar este tiempo a aprender algo más correcto y más lógico (lo que estoy tratando de hacer activamente ahora). Pero dio la casualidad de que no había nadie que me guiara por el camino correcto al comienzo de mi viaje.

Si eres un desarrollador php principiante, Bitrix preferiría marcos de aprendizaje como Symfony, Laravel, Yii, ZendFramework. Créame, se amortizará con intereses en el futuro. Habiendo dominado cualquiera de estos marcos, no será difícil para usted desarrollar algo para Bitrix en el futuro. Si no tienes otra opción, entonces estudia Bitrix, pero en tu tiempo libre es mejor intentar sumergirte en el mundo de los frameworks para poner tu cerebro en su lugar.

Si eres un desarrollador con experiencia en Bitrix, pero sin experiencia en otros frameworks, entonces asegúrate de sumergirte en otro mundo, descubrirás muchos conocimientos nuevos y útiles que te ayudarán a escribir soluciones mucho mejores para 1C-Bitrix. Intente utilizar soluciones de otros frameworks en sus proyectos, ya que no es difícil hacerlo gracias al enfoque de componentes de este último y composer.

Si es un cliente, no confíe en los especialistas en marketing de Bitrix. Nada será tan fácil como dicen en las presentaciones de Bitrix. Y no culpes a tus desarrolladores, ellos no tienen nada que ver con eso. Si desea crear una tienda en línea grande y compleja del nivel eldorado / mvideo / sportmaster, entonces, quizás, Bitrix no sea la mejor opción.

UPD. Se puede ver que el artículo fue leído por empleados de Bitrix. En la sección sobre marketing, escribí que las llamadas de marketing se escribieron en la sección Arquitectura del curso para desarrolladores de Bitrix. Ahora no están ahí. Incluso se sellaron, aparentemente, tenían prisa.

Gracias por su observación y buen ojo :)

Etiquetas:

  • 1c-bitrix
  • cms
  • desarrollo web
  • trastero
  • hatebitrix
  • lloriqueos en habr
  • Controlarte a ti mismo
Agregar etiquetas

Un artículo que explora el elemento de sección HTML de la categoría de sección.

Propósito del elemento de sección

El elemento de sección se utiliza para crear una sección en un documento que agrupa algunos contenidos temáticos. Para cada sección del documento, se debe indicar su nombre (tema). Esto generalmente se hace con encabezados (elementos h1-h6).

Encabezado de la sección

Contenido de la sección ...

Los elementos de sección se utilizan comúnmente en las siguientes situaciones:

  • para marcar secciones dentro de una sección. Por ejemplo, para marcar capítulos en un artículo, pestañas en un cuadro de diálogo, secciones en una disertación, etc.
  • agrupar varias secciones en un grupo temático. Por ejemplo, para agrupar últimas noticias en el sitio web, comentarios sobre el artículo, etc.

Por lo tanto, el elemento de sección solo debe usarse para algún contenido si tiene un encabezado y es parte de otra cosa.

Usando el elemento de sección

Por ejemplo, considere un fragmento de código de página que contiene un artículo con comentarios. Cada uno de los comentarios publicados por el usuario en la página contiene algún contenido completo y, por lo tanto, puede considerarse un elemento de artículo. Pero, al mismo tiempo, todos los comentarios representan un determinado grupo temático y, por lo tanto, se pueden colocar en el elemento de sección, es decir. elemento dado agrupará todos estos comentarios en la página.

Título del artículo

Comentarios (1)

Encabezado de comentario

Texto de comentario ...

Encabezado de comentario

Texto de comentario ...

Título del artículo Comentarios Título del comentario Título del comentario

Por ejemplo, considere usar elementos de sección para crear secciones dentro de un elemento de artículo:

Titulo del libro

Primer capitulo

Capitulo dos

Capítulo tres

Apéndice A

apéndice B

El ejemplo anterior tendrá el siguiente esquema:

Título del libro Capítulo uno Capítulo dos Capítulo tres Apéndice A Apéndice B

Limitaciones del uso del elemento de sección

El elemento de sección en HTML 5 no es un elemento genérico para agrupar contenido, es decir, no debe usarse para envolver cualquier contenido que le guste. Su propósito principal es agregar semántica al documento y crear su esquema.

Cuando un autor necesita agrupar contenido solo para darle estilo o manipularlo en JavaScript, el mejor lugar es para que use el elemento div. El elemento div, a diferencia del elemento section, no agrega semántica al documento y no participa en la creación de su esquema (esquema).

Diferencia entre elementos de sección y artículo

Los elementos de sección y artículo, aunque a primera vista parecen muy similares, tienen significados semánticos diferentes. El elemento de artículo está destinado a agrupar contenido que es completo, autónomo y se puede ver por separado del resto del contenido de la página. Y el elemento de sección tiene un significado semántico diferente, está destinado a agrupar contenido que es parte integral de otra cosa.

Pero, ¿cómo puede un autor saber cuál es el contenido de una página? Veamos esto usando un ejemplo de un fragmento de un artículo. Un fragmento es parte de un artículo y, por lo tanto, se debe utilizar un elemento de sección para agrupar su contenido. Pero el mismo fragmento, ya dejado como comentario, representará algo entero, completo. Por lo tanto, en este contexto, el elemento de artículo se puede utilizar para agruparlo. Pero, por supuesto, se puede razonar y viceversa. Por lo tanto, qué elemento utilizar para agrupar el contenido depende en la mayoría de los casos de su opinión subjetiva como autor. Pero lo más importante en este enfoque es mantener la posición elegida. Por lo tanto, cuanto más coherente sea el autor en la creación de la estructura, más sentido podrá poner en ella.

). Cada etiqueta (sección) debe tener un par (/ sección)... Los parámetros requeridos son nombre y círculo... El nombre del bucle (sección) puede ser cualquier nombre que conste de letras, números y guiones bajos. Ciclos (sección) pueden estar anidados y los nombres anidados (sección) deben ser únicos entre sí. Variable círculo(generalmente una matriz de valores) determina el número de iteraciones del ciclo. Al imprimir variables dentro de una sección, el nombre de la sección debe indicarse junto al nombre de la variable entre corchetes. (sección más) se ejecuta si el parámetro círculo no contiene valores.

Nombre del Atributo Tipo de Obligatorio Defecto Descripción
nombre cuerda n / A Nombre de la sección
círculo mezclado n / A Un valor que determina el número de iteraciones de bucle.
comienzo entero No 0 El índice de la posición en la que comenzará el bucle. Si el valor es negativo, la posición inicial se calcula desde el final de la matriz. Por ejemplo, si la variable de ciclo tiene 7 elementos y el valor del atributo de inicio es -2, entonces el índice de inicio será 5. Los valores no válidos (valores fuera de la matriz) se truncan automáticamente al valor válido más cercano.
paso entero No 1 El valor de zancada que se usa para atravesar la matriz. Por ejemplo, step = 2 indica un recorrido de la matriz por los elementos 0,2,4 ... Si el paso es negativo, entonces la matriz se recorrerá en la dirección opuesta.
max entero No 1 El número máximo de iteraciones de bucle.
show booleano No cierto Indica si mostrar esta sección o no

Nota

A partir de Smarty 1.5.0, la sintaxis de las variables de propiedad de sesión se ha cambiado de (% sectionname.varname%) a ($ smarty.section.sectionname.varname). La sintaxis anterior todavía es compatible, pero solo verá ejemplos de la nueva sintaxis.

index se utiliza para mostrar el índice actual de la matriz, comenzando en cero (o en el atributo de inicio, si se especifica) y aumentando en uno (o por el valor del atributo de paso, si se especifica).

Nota tecnica

Si no se especifican los atributos de paso e inicio, entonces el índice es el mismo que el atributo de la sección de iteración, excepto que comienza en 0 en lugar de 1.

La iteración se utiliza para mostrar el número de iteración actual del bucle.

Nota

Este valor es independiente de las propiedades start, step y max, a diferencia de la propiedad índice... Además, las iteraciones comienzan en uno, en lugar de cero, como los índices. rownum son sinónimos de iteración, funcionan de la misma manera.

Ejemplo 7.38. propiedad (sección) iteración

asignar ("custid", $ id); ?> (nombre de la sección = bucle cu = $ custid inicio = 5 pasos = 2) iteración = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ sección)

El resultado de este ejemplo:

Iteración = 1 índice = 5 id = 3005
iteración = 2 índice = 7 id = 3007
iteración = 3 índice = 9 id = 3009
iteración = 4 índice = 11 id = 3011
iteración = 5 índice = 13 id = 3013
iteración = 6 índice = 15 id = 3015

Este ejemplo usa la propiedad de iteración para mostrar el título de la tabla cada cinco líneas (usa (si) con operador mod).

(nombre de la sección = co loop = $ contactos) (si $ smarty.section.co.iteration% 5 == 1) (/ si) (/ sección)
Nombre>HogarCeldaCorreo electrónico
vista ($ contactos.nombre) ($ contactos.inicio) ($ contactos.celda) ($ contactos.email)