DISPLAY FO Desde 1.7

displayCarrierExtraContent

~3 min de lectura

#Descripcion

Muestra contenido extra debajo de cada opcion de transportista en el paso de envio del checkout. Permite añadir funcionalidades como seleccion de puntos de recogida (pickup points), calendarios de entrega, instrucciones especiales, mapas interactivos o formularios adicionales especificos para cada transportista.

📍
Disparado por
  • CheckoutDeliveryStepCore::render()src/Adapter/Presenter/Order/OrderPresenter.php

#Parametros

Nombre Tipo Requerido Descripcion
$carrier Carrier Si Objeto Carrier del transportista actual
Retorno
string HTML que se muestra debajo de la opcion del transportista

#Ejemplo de codigo

mymodule.php
php
public function install()
{
    return parent::install()
        && $this->registerHook('displayCarrierExtraContent');
}
mymodule.php
php
/**
 * Hook displayCarrierExtraContent — Selector de puntos de recogida
 */
public function hookDisplayCarrierExtraContent($params)
{
    $carrier = $params['carrier'];
    
    // Solo mostrar para nuestro transportista
    if ((int)$carrier->id !== (int)Configuration::get('MYMODULE_CARRIER_ID')) {
        return '';
    }

    // Obtener direccion del cliente para buscar puntos cercanos
    $address = new Address($this->context->cart->id_address_delivery);
    $pickupPoints = $this->getPickupPoints(
        $address->postcode,
        $address->city,
        $address->id_country
    );

    $this->context->smarty->assign([
        'pickup_points' => $pickupPoints,
        'id_carrier'    => (int)$carrier->id,
        'ajax_url'      => $this->context->link->getModuleLink(
            $this->name, 'pickupPoints', ['ajax' => 1]
        ),
        'selected_point' => $this->context->cookie->__get('mymod_pickup_point'),
    ]);

    return $this->display(__FILE__, 'views/templates/hook/carrier-extra.tpl');
}
template.tpl
smarty
{hook h='displayCarrierExtraContent' carrier=$carrier}

#Notas y gotchas

  • ⚠️ El hook se ejecuta para CADA transportista. Filtra siempre con `$carrier->id` para mostrar solo tu contenido.
  • ⚠️ Si necesitas AJAX (ej: mapa de puntos de recogida), registra tu JS con `actionFrontControllerSetMedia`.
  • ⚠️ El contenido se muestra colapsado — aparece solo cuando el cliente selecciona ese transportista.
  • ⚠️ Para guardar la seleccion del punto de recogida, usa cookies o sessions y procesalo en `actionValidateOrder`.
  • ⚠️ Solo disponible desde PS 1.7 — en PS 1.6, usa hooks genericos del checkout.

#Relacionados

#Historial de versiones

Version PSCambio
1.7 Introducido con el nuevo checkout de 5 pasos de PS 1.7
Descargar en Markdown Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.