icon
Avatar
zod
Post: 217
Ciao, mi servirebbe per la versione 3.2.11 di Contao un modulo che vedo rimasto per versione antichissima di... Typolight :w00t: : https://contao.org/en/extension-list/view/newsorder.10000019.en.html

In pratica dovrei ordinare le news per Titolo e non per data, più precisamente ho a che fare con degli "archivi news" e non "liste news", sarebbe bello che questa facoltà di ordinamento fosse di default nel modulo, ma non è così. Ho cercato qualche estensione per risolvere la cosa, ma non l'ho trovata. Qualche idea? Grazie
Marco Damian
www.zod.it
16/01/2015 00:04
Avatar
paolob
Moderatore
Post: 1550
Cercato pure io, ma non ne ho viste.

All'interno del modulo news non c'è la possibilità di ordinare gli elementi.
La funzione che recupera gli elementi delle news è findPublishedByPids, l'idea potrebbe essere di partire dal file ModuleNewsList.php e creare un nuovo modulo con l'opzione per l'ordinamento.
Paolo B.
paolob@contaocms.it
16/01/2015 08:52
Avatar
zod
Post: 217
Ciao Paolo, grazie sempre della fulminea risposta, ho guardato dove hai indicato e ho trovato che la funzione viene usata nei due casi:

In ModuleNewsArchive.php

iconphp:
 
		// Get the news items
		if (isset($limit))
		{
			$objArticles = \NewsModel::findPublishedFromToByPids($intBegin, $intEnd, $this->news_archives, $limit, $offset);
		}
		else
		{
			$objArticles = \NewsModel::findPublishedFromToByPids($intBegin, $intEnd, $this->news_archives);
		}
 


in ModuleNewsList.php

iconphp:
 
		// Get the items
		if (isset($limit))
		{
			$objArticles = \NewsModel::findPublishedByPids($this->news_archives, $blnFeatured, $limit, $offset);
		}
		else
		{
			$objArticles = \NewsModel::findPublishedByPids($this->news_archives, $blnFeatured, 0, $offset);
		}


Poi se prendiamo models/NewsModel.php (https://github.com/contao/core/blob/master/system/modules/news/models/NewsModel.php) troviamo cosa fa la funzione con i suoi parametri, e mi sembra sia già predisposta per l'ordinamento, in un array finale "arrOptions":

findPublishedFromToByPids($intFrom, $intTo, $arrPids, $intLimit=0, $intOffset=0, array $arrOptions=array())

Infatti più sotto:

iconphp:
 
if (!isset($arrOptions['order']))
{
$arrOptions['order'] = "$t.date DESC";
}
 


Quindi è proprio qui il punto, basterebbe cambiare "date DESC". Purtroppo qui mi fermo, come faccio perché diventi una variabile, che proviene quindi da un campo select messo nel modulo archive o list?
Marco Damian
www.zod.it
16/01/2015 10:18
icon