icon
Avatar
zod
Post: 217
Ho da un po' l'esigenza di estendere i moduli, in particolare quello delle News. Imparato questo, potrei iniziare a replicare il modulo per fare cloni che si occupano di varie cose, cataloghi prodotti ecc... Ho sempre trovato scappatoie ma adesso mi piacerebbe affrontare il problema per arrivare a conoscere davvero bene la parte "moduli" di Contao.

Iniziamo con l'estensione di quelli esistenti.

Ho letto che per estendere un modulo basta crearne uno, nominarlo in modo che la lettera sia successiva al modulo originale, e li dentro aggiungere i campi che servono.
Nella documentazione spiegano come estendere la DCA in questa pagina: https://docs.contao.org/books/manual/3.2/en/07-customizing-contao/adding-custom-fields.html

Infatti è quello che vorrei fare, cioè aggiungere ad un articolo delle news altri 3 campi: 1 testo, 1 checkbox, 1 select. Poi vorrei estendere anche il form dei commenti.

Ho voluto partire proprio dai commenti, aggiungendo un campo checkbox che permetta all'utente di scegliere se vuole il suo commento visibile pubblicamente, oppure no. Ho chiamato questo campo "showpublic".

Dunque, seguendo la documentazione ho fatto la cartella "modules/comments-extra" (è subito dopo il modulo "comments").
Poi "modules/comments-extra/dca" con dentro un file "tl_comments.php" contentente questo codice:

iconphp:
 
<?php
 
/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2015 Leo Feyer
 *
 * @license LGPL-3.0+
 */
 
 
/**
 * Table tl_comments
 */
 
// Add the field meta data
$GLOBALS['TL_DCA']['tl_comments']['fields']['showpublic'] = array
(
    'label'     => &$GLOBALS['TL_LANG']['tl_comments']['showpublic'],
	'exclude'                 => true,
	'filter'                  => true,
	'inputType'               => 'checkbox',
	'eval'                    => array('tl_class'=>'w50'),
	'sql'                     => "char(1) NOT NULL default ''"
);
 


Domanda: ma l'intestazione ha rilevanza oppure no? I commenti sono letti in qualche modo da Contao?

Poi ho creato anche i file di traduzione, quindi dentro "modules/comments-extra/languages/en" e "modules/comments-extra/languages/it" ho inserito un file nominato "tl_comments.php" contenente questo codice.

iconphp:
 
<?php
 
/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2015 Leo Feyer
 *
 * @license LGPL-3.0+
 */
 
 
/**
 * Table tl_comments
 */
$GLOBALS['TL_LANG']['tl_comments']['showpublic'] = array
(
    'Mostra il commento sul sito web',
    'Fai una scelta.'
);
 


Quindi sono andato in contao/install.php, Contao si è accorto del nuovo campo, ha aggiornato il database. Tutto a posto. Entro in back end, non sembra sia accaduto nulla.

Ho provato a modificare il template "mod_comment_form.html5" seguendo la scia degli altri campi, cioè ho aggiunto:

iconhtml4strict:
 
<?= $this->fields['showpublic']->generateWithError() ?> 
 


Ma la pagina da errore, e non mi mostra il campo.
Immagino che il modulino extra non sia completo, forse servono altri file in autoload, in config, non ne so molto purtroppo.

Come faccio a far apparire il campo nel template? E come faccio a farlo apparire anche in back end, affinché il gestore veda la scelta dell'utente e quindi sappia se pubblicare o no il commento?

La guida su come creare un modulo custom non mi è stata molto di aiuto, procede per fare qualcosa di diverso, ed è basata su Contao 2.
Il blog di Kamil (Codefog) da cui era tratta, è ormai stato dismesso e cmq sarebbe sempre su quel modello, mentre io devo fare altro. Non riesco a farmi un quadro preciso di come si deve procedere.

Mi aiuterebbe avere una documentazione che spiega come estendere i moduli, e come farne di molto semplici. Magari con alcuni esempi diversi, a difficoltà progressiva, credo non sia ottimale partire con la costruzione di un modulo che gestisce una libreria, o un catalogo di CD. Ci sono troppe cose che devo capire prima. Non sono stato molto fortunato a trovare dei tutorial. Qualcuno saprebbe darmi qualche dritta? Grazie.
Marco Damian
www.zod.it
06/01/2017 23:54
icon