ottimizzazione Visualizzazione lista e singoli

This commit is contained in:
2025-08-29 13:02:28 +02:00
parent 22fb3c0871
commit 06e6a5e7ef
5 changed files with 32 additions and 144 deletions

View File

@ -1,4 +1,5 @@
<?php
namespace Pcrt\Component\Circolari\Site\View\Circolare;
\defined('_JEXEC') or die;
@ -20,31 +21,11 @@ class HtmlView extends BaseHtmlView
$this->item = $this->get('Item');
// Se NON c'è l'item → mostra la lista
if (!$this->item) {
$app = \Joomla\CMS\Factory::getApplication();
$factory = $app->bootComponent('com_circolari')->getMVCFactory();
/** @var \Pcrt\Component\Circolari\Site\Model\CircolariModel $model */
$model = $factory->createModel('Circolari', 'Site', ['ignore_request' => true]);
// Imposta gli stati MANUALMENTE (niente populateState: è protected)
$model->setState('filter.catid', 0); // nessun filtro categoria
$model->setState('list.start', 0);
$model->setState('list.limit', 0); // 0 = nessun limite (tutte)
$model->setState('list.ordering', 'c.id'); // colonna di ordinamento
$model->setState('list.direction', 'DESC'); // direzione
// Recupera i dati
$this->state = $model->getState();
$this->items = $model->getItems();
$this->pagination = $model->getPagination();
// Usa il layout della lista (tmpl/circolari/default.php)
$this->setLayout('default');
$this->addTemplatePath(JPATH_COMPONENT_SITE . '/tmpl/circolari');
return parent::display($tpl);
}
if (!$this->item) {
$this->setLayout('default');
$this->addTemplatePath(JPATH_COMPONENT_SITE . '/tmpl/circolari');
return parent::display($tpl);
}
// Rendering normale della singola
return parent::display($tpl);

View File

@ -7,15 +7,8 @@ use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
class HtmlView extends BaseHtmlView
{
public $items;
public $pagination;
public $state;
public function display($tpl = null)
{
$this->state = $this->get('State');
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
return parent::display($tpl);
return parent::display($tpl); // il template carica i moduli
}
}