Allegati in alcune pagine (Risolto con UDT!)

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
ingegnimultimediali
Forum Members
Forum Members
Posts: 41
Joined: Mon Mar 10, 2008 5:44 pm

Allegati in alcune pagine (Risolto con UDT!)

Post by ingegnimultimediali »

Nel progetto che sto portando avanti in questo periodo con cmsms mi sono trovato nella situazione di inserire degli allegati solo in alcune pagine. Praticamente se ad una pagina devono essere collegati degli allegati, creo la categoria all'interno del modulo upload che chiamo esattamente come l'alias della pagina: questo mi aiuta a scrivere una sola volta lo smarty che mi richiama gli allegati:

Code: Select all

{cms_module module="Uploads" category=$page_alias mode="detailed" sortorder="date_desc" detailtemplate="sidebar"}
Non sono riuscito però ad automatizzare il problema di attivare il modulo upload solo nella pagine che hanno gli allegati; ho risolto mettendo in OR, all'interno di un {if}, le pagine interessate:

Code: Select all

{if $page_alias == 'alias1' || $page_alias == 'alias2'}
<div id="allegati">
<img src="images/menu_allegati.gif" alt="menu che elenca gli allegati" border="0" />
{cms_module module="Uploads" category=$page_alias mode="detailed" sortorder="date_desc" detailtemplate="sidebar"}
</div>
{/if}
Mi chiedevo ora come si potrebbe fare, magari creando un tag personalizzato, a gestire un if che ritorni TRUE solo se il modulo UPLOAD ha una categoria che si chiama esattamente come il $page_alias. Ciò permetterebbe di scrivere la sintassi solo una volta nel template, senza pensare alle pagine nelle quali si deve attivare.

Qualcuno mi può fornire un aiuto a risolvere questa situazione o ha qualche altra idea per risolvere il problema?  ???
Grazie a tutti
Last edited by ingegnimultimediali on Tue Jun 24, 2008 9:08 am, edited 1 time in total.
alby

Re: Allegati in alcune pagine

Post by alby »

ingegnimultimediali wrote: Nel progetto che sto portando avanti in questo periodo con cmsms mi sono trovato nella situazione di inserire degli allegati solo in alcune pagine. Praticamente se ad una pagina devono essere collegati degli allegati, creo la categoria all'interno del modulo upload che chiamo esattamente come l'alias della pagina: questo mi aiuta a scrivere una sola volta lo smarty che mi richiama gli allegati:

Code: Select all

{cms_module module="Uploads" category=$page_alias mode="detailed" sortorder="date_desc" detailtemplate="sidebar"}
Non sono riuscito però ad automatizzare il problema di attivare il modulo upload solo nella pagine che hanno gli allegati; ho risolto mettendo in OR, all'interno di un {if}, le pagine interessate:

Code: Select all

{if $page_alias == 'alias1' || $page_alias == 'alias2'}
<div id="allegati">
<img src="images/menu_allegati.gif" alt="menu che elenca gli allegati" border="0" />
{cms_module module="Uploads" category=$page_alias mode="detailed" sortorder="date_desc" detailtemplate="sidebar"}
</div>
{/if}
Si potrebbe con un UDT che chiama Upload e controlla se ha una categoria $page_alias.
Basta metterlo in automatico nel metadata o anche nel template {myudt pagina=$page_alias} e setta una variabile smarty ($category_upload) a true/false.
Poi nella pagina:

Code: Select all

{if $category_upload}
visualizza il tag
{/if}
Io non conosco Upload se ha un metodo per il check della categoria oppure cosa esce con il tag: {cms_module module="Uploads" category=$page_alias}
su questo bisogna giocarci un pò

Alby
ingegnimultimediali
Forum Members
Forum Members
Posts: 41
Joined: Mon Mar 10, 2008 5:44 pm

Re: Allegati in alcune pagine

Post by ingegnimultimediali »

grazie!
provo un po e poi posto la soluzione.
comunque {cms_module module="Uploads" category=$page_alias} funziona e l'ho già testato. Se la categoria è presente ti fa vedere i files altrimenti esce il warning "Errore! categoria non presente".
ingegnimultimediali
Forum Members
Forum Members
Posts: 41
Joined: Mon Mar 10, 2008 5:44 pm

Re: Allegati in alcune pagine

Post by ingegnimultimediali »

alby ho trovato il seguente metodo nel file Uploads.module.php che da quello che vedo mi dovrebbe ritornare false se la categoria non è presente:

Code: Select all

function getCategoryFromName($name)
  {
    $db =& $this->GetDb();
    $query =
      "SELECT * FROM ".cms_db_prefix ().
      "module_uploads_categories WHERE upload_category_name = ?";
    $dbresult = $db->Execute ($query, array ($name));
    $row = $dbresult->FetchRow();
    if( !$row ) 
      {
				return false;
      }
    return $row;
  }
Mi daresti un suggerimento per come fare, nel creare l'UDT, a richiamare proprio quella funzione di quel file?
alby

Re: Allegati in alcune pagine

Post by alby »

ingegnimultimediali wrote: Mi daresti un suggerimento per come fare, nel creare l'UDT, a richiamare proprio quella funzione di quel file?
global $gCms;

$smarty =& $gCms->GetSmarty();
$uploads =& $gCms->modules['Uploads']['object'];

$cat_uploads = false;
if ( ($uploads) && (isset($params['alias'])) && ($uploads->getCategoryFromName($params['alias'])) )
  $cat_uploads = true;
}
$smarty->assign('cat_uploads', $cat_uploads);
Tutto da verificare ..........

{myudt alias=$page_alias}

e check con {if $cat_uploads} ..... {/if}

Alby
Last edited by alby on Tue Jun 24, 2008 8:46 am, edited 1 time in total.
ingegnimultimediali
Forum Members
Forum Members
Posts: 41
Joined: Mon Mar 10, 2008 5:44 pm

Re: Allegati in alcune pagine

Post by ingegnimultimediali »

BINGOOO!!
Alby avevi dubbi che il test avesse esito negativo??  ;)

Ecco qui la soluzione definitiva.

per avere degli allegati solo in una pagina occorre creare, nel modulo Uploads, una categoria denominata con il nome della pagina.

Dopodichè si crea il seguente UDT denominato in questo caso check_allegati:

Code: Select all

global $gCms;

$smarty =& $gCms->GetSmarty();
$uploads =& $gCms->modules['Uploads']['object'];

$cat_uploads = false;
if ( ($uploads) && (isset($params['alias'])) && ($uploads->getCategoryFromName($params['alias'])) ){
  $cat_uploads = true;
}
$smarty->assign('cat_uploads', $cat_uploads);
Infine nel template della pagina si inserisce il seguente codice:

Code: Select all

{check_allegati alias=$page_alias}
{if $cat_uploads}
<div id="allegati">
{cms_module module="Uploads" category=$page_alias mode="detailed" sortorder="date_desc" detailtemplate="sidebar"}
</div>
{/if}
Io sto trovando tale funzionalità molto utilie.
Grazie ancora per l'aiuto al grande alby!
Post Reply

Return to “Italian - Italiano”