Hola @elena89 y compañeros,
Tenéis toda la razón. En PrestaShop 9.1.4 (y versiones anteriores 8.x), la forma correcta de gestionar la visibilidad y validación de campos opcionales como la fecha de nacimiento, el título social o las ofertas de los socios es a través del Back Office. El sistema de PrestaShop está diseñado para que la configuración principal se haga allí, y el formulario de checkout se adapta automáticamente.
Los pasos correctos son:
- Ve a Parámetros de la tienda > Clientes > Clientes en tu Back Office.
- Busca las opciones:
- Activar fecha de nacimiento: Ponla en NO.
- Activar título social: Ponla en NO.
- Activar opción de ofertas de los socios: Ponla en NO.
- Guarda los cambios.
Al hacer esto, PrestaShop ya no incluirá estos campos en el objeto $form que se envía a la plantilla customer-form.tpl, ni realizará validación para ellos. Esto es porque el CustomerFormatter de Symfony, que construye el formulario, respetará estas configuraciones.
Si, por alguna razón (por ejemplo, un módulo o un override de tema muy específico) estos campos siguieran apareciendo, podrías forzar su eliminación en un child theme sobrescribiendo _partials/customer-form.tpl. Un ejemplo sería:
{extends 'classic/_partials/customer-form.tpl'}
{block name='customer_form_fields' prepend}
{foreach from=$form.fields item=field}
{* Excluir campos específicos si no queremos que aparezcan bajo ninguna circunstancia *}
{if $field.name === 'id_gender' || $field.name === 'birthday' || $field.name === 'optin'}
{* No renderizar estos campos, sin importar su estado 'available' *}
{else}
{block name='form_field'}
{$field.form_field_html nofilter}
{/block}
Este código, puesto en themes/tu_child_theme/templates/_partials/customer-form.tpl, asegura que esos campos no se rendericen en el formulario. Pero insisto, lo ideal es gestionarlo siempre primero desde el Back Office, ya que es la forma más limpia y compatible con las actualizaciones.