getCustomSortOrders();
// Inyectamos en el objeto estándar (por si acaso)
$variables['listing']['sort_orders'] = $customSorts;
// Inyectamos nuestra variable persistente
$this->context->smarty->assign('my_custom_sorts', $customSorts);
return $variables;
}
// Método 2: Para asegurar la carga inicial de la página
public function initContent()
{
parent::initContent();
error_log("LOADING", 3, "dropcontroller.log");
$this->context->smarty->assign('my_custom_sorts', $this->getCustomSortOrders());
}
// Método Privado para no repetir código
private function getCustomSortOrders()
{
$translator = $this->getTranslator();
$sortOrders = [];
// VENTAS - Usamos un bloque try/catch preventivo o simplemente lo añadimos
// sabiendo que el campo en BD para ventas suele llamarse 'sales' en el motor de búsqueda
$sortOrders[] = (new SortOrder('product', 'position', 'desc'))->setLabel($translator->trans('Los más vendidos', [], 'Shop.Theme.Catalog'));
// Relevancia (Posición)
$sortOrders[] = (new SortOrder('product', 'position', 'asc'))->setLabel($translator->trans('Relevancia', [], 'Shop.Theme.Catalog'));
// Precio
$sortOrders[] = (new SortOrder('product', 'price', 'asc'))->setLabel($translator->trans('Precio: menor a mayor', [], 'Shop.Theme.Catalog'));
$sortOrders[] = (new SortOrder('product', 'price', 'desc'))->setLabel($translator->trans('Precio: mayor a menor', [], 'Shop.Theme.Catalog'));
// Nombre
$sortOrders[] = (new SortOrder('product', 'name', 'asc'))->setLabel($translator->trans('Nombre: A-Z', [], 'Shop.Theme.Catalog'));
$sortOrders[] = (new SortOrder('product', 'name', 'desc'))->setLabel($translator->trans('Nombre: Z-A', [], 'Shop.Theme.Catalog'));
$sortOrders[] = (new SortOrder('stock_available', 'quantity', 'desc'))->setLabel($translator->trans('Disponible, Mayor a Menor', [], 'Shop.Theme.Catalog'));
$formattedSortOrders = [];
$currentOrder = Tools::getValue('order');
foreach ($sortOrders as $sortOrder) {
$orderArray = $sortOrder->toArray();
$orderArray['url'] = $this->context->link->getPageLink(
'prices-drop',
true,
$this->context->language->id,
['order' => $sortOrder->toString()]
);
$orderArray['current'] = ($currentOrder === $sortOrder->toString());
$formattedSortOrders[] = $orderArray;
}
return $formattedSortOrders;
}
}