CS Cart o espinas a un agujero negro de muletas y optimizaciones

Más recientemente, me convertí en desarrollador de complementos de CS Cart. Ocurrió por casualidad: me contrataron para trabajar en la red de tiendas en línea de San Petersburgo que venden vaporizadores y todo tipo de cosas interesantes para satisfacer las necesidades físicas de las parejas que sufren y los solteros (que no entendían, que aún no habían madurado). Ambas tiendas en línea se implementan en dos escaparates con dominios diferentes, pero un panel de administración y una base de datos común. ¿Qué le pasa a ella? Creo que se ha escrito mucho sobre CMS, pero agregaré mi mosca en el ungüento.





Viaje al módulo a través del bosque de directorios

En el proceso de desarrollo del primer módulo para esta plataforma, enfrenté muchos problemas, los cuales, como pensaba, tener experiencia con OOP, así como con CMS MODX Revo, no deberían existir. Lo primero que me llamó la atención fue la estructura muy compleja y confusa del módulo:





root/
├─ app/
│  └ addons/                                     <-   
│    └ [id_]/                              <-  
│       ├─ controllers/                          <-  
│       │  ├─ backend/                           <-  
│       │  │  ├─ [_].php            <-  
│       │  │  ├─ [].pre.php            <-   
│       │  │  └─ [].post.php           <-   
│       │  ├─ common/                            <-  
│       │  │  ├─ [_].php
│       │  │  ├─ [].pre.php
│       │  │  └─ [].post.php
│       │  └─ frontend/                          <-  
│       │     ├─ [_].php
│       │     ├─ [].pre.php
│       │     └─ [].post.php
│       ├─ database/                             <- MySQL 
│       ├─ schemas/                              <-  PHP 
│       │  └─ [_]/                      <-   ( )
│       │     └─ [_].post.php       <-   
│       ├─ Tygh/                                 <- 
│       │  ├─ Shippings/                         <- 
│       │  │  └─ Services/                       <-  
│       │  │     └─ [].php         <-   
│       │  └─ [].php                     <-   
│       ├─ addon.xml                             <-   
│       ├─ config.php                            <- 
│       ├─ func.php                              <-    
│       └─ init.php                              <-  
├─ design/
│  ├ backend/                                    <-   
│  │ ├ css/                                      <-   
│  │ │ └ addons/
│  │ │   └ [id_]/                          <-  
│  │ │     ├ styles.css                          <-  
│  │ │     └ styles.less
│  │ ├ mail/                                     <- Email   
│  │ │ └ templates/
│  │ │   └ addons/                               <-   
│  │ │     └ [id_]/                        <-  
│  │ │       ├ hooks/                            <-   
│  │ │       │ └ [_]/                     <-  
│  │ │       │   ├ [_].pre.tpl       <-   
│  │ │       │   ├ [_].post.tpl      <-   
│  │ │       │   └ [_].override.tpl  <-  
│  │ │       ├ [_]_subj.tpl/
│  │ │       └ [_].tpl/
│  │ ├ media/                                    <-  
│  │ │ └ images/
│  │ │   └ addons/
│  │ │     └ [id_]/                        <-   
│  │ │       ├ _1.jpg/
│  │ │       └ _2.png/
│  │ └ templates/                                <- 
│  │   └ addons/
│  │     └ [id_]/
│  │       ├ hooks/                              <-   
│  │       │ ├ index/                            <-  
│  │       │ │ ├ scripts.post.tpl                <-    
│  │       │ │ └ styles.post.tpl                 <-    
│  │       │ └ [_]/
│  │       │   ├ [_].pre.tpl         <-    
│  │       │   ├ [_].post.tpl        <-    
│  │       │   └ [_].override.tpl    <-    
│  │       ├ views/                              <-  
│  │       │ └ [_]/                 <- 
│  │       │   └ [_].tpl         <-  (mode) 
│  │       └ overrides/                          <-   
│  │         └ ...                               <-   
│  │
│  └ themes/                                     <-   — 
│    └ [_]/                          <-  
│      ├ css/                                    <- 
│      │ └ addons/
│      │   └ [id_]/
│      │     ├ styles.css                        <-   CSS
│      │     └ styles.less                       <-   LESS
│      ├ mail/                                   <-    
│      │ └ templates/
│      │   └ addons/
│      │     └ [id_]/
│      │       ├ hooks/                          <-   
│      │       │ └ [_]/
│      │       │   ├ [_].pre.tpl
│      │       │   ├ [_].post.tpl
│      │       │   └ [_].override.tpl
│      │       ├ [_]_subj.tpl/       <-   
│      │       └ [_].tpl/            <-  
│      ├ media/                                  <-  
│      │ └ images/
│      │   └ addons/                             <-  
│      │     └ [id_]/
│      │       ├ _1.jpg/
│      │       └ _2.png/
│      └ templates/                              <- 
│        └ addons/
│          └ [id_]/                        <-  
│            ├ hooks/                            <-  
│            │ ├ index/                          <-  
│            │ │ ├ scripts.post.tpl              <-    
│            │ │ └ styles.post.tpl               <-    
│            │ └ [_]/                     <-  
│            │   ├ [_].pre.tpl       <-    
│            │   ├ [_].post.tpl      <-    
│            │   └ [_].override.tpl  <-   
│            ├ views/                            <-  
│            │ └ [_]/               <-   
│            │   └ [_].tpl       <-    
│            └ overrides/                        <-    
│              └ ...                             <-    
│
├ js/                                            <-  
│ └ addons/
│   └ [id_]/
│     └ func.js/
â”” var/                                           <-   
  â”” themes_repository/                           <-   
    â”” [_]/
      â”” ...
      
      



, , , , , , . : , AJAX , CMS JS , . , , 3-4 -, , , .





, , , .





- ,

, , . , , , , : " ?!" - Google LightHouse, , 20 10 , . . , CMS - , , PHP, , , . ? - : CMS 2003-2004 , MyISAM.





MyISAM - , 50 000 (!) ( ). , , InnoDB. - 500 - 1000 .





. 50 000 ? " " - . , SEO . . : . , , . , , . , "" -.





- , , , .





? 100

, - "". cron - . , , - . , - . , , 100$ . , , , , , CMS . CMS, , , , , , , .





ConclusiĂłn

No creo que la situación con este CMS vaya a cambiar nunca y realmente lo siento por aquellos que, teniendo una enorme base de nomenclatura, se sientan y pagan un dinero fabuloso por todos los toques finales. Pero quiero creer que, al menos en mi tienda, podré superar algunas de sus deficiencias.





Espero que el artículo te haya resultado interesante. Escribiré más sobre mi investigación en este CMS o sobre el desarrollo de módulos para él.








All Articles