Come sviluppatori e organizzatori, sappiamo che un bel sito è inutile senza un approccio strategicamente organizzato. In questo articolo vedremo come sfruttare al meglio Joomla Core per creare un sito web per conferenze che dia i risultati sperati.
Fase 1: Definire la struttura
Il nostro sito web della conferenza dovrebbe essere composto dalle seguenti voci di menu:
- Pagina iniziale
- Notizie
- Ubicazione e sistemazione
- Biglietti
- Oratori
- Programma
- Sponsor
- Note legali, Termini e condizioni, Informativa sulla privacy
Fase 2: Definire la funzionalità
- Gli oratori dovrebbero essere in grado di registrarsi, presentare discorsi e modificare un profilo con foto e biografia
- Il team dovrebbe essere in grado di rivedere e pubblicare i colloqui / gli oratori accettati
Fase 3: Definire i tipi di contenuto
Definire i tipi di contenuto è utile per decidere se è necessaria un'estensione o se Core è sufficiente.
Pagina iniziale
Banner con logo, data e posizione: Modulo personalizzato
Testo di benvenuto: Articolo come contenuto principale
Notizie: Modulo articoli
Notizie
Articoli come categoria blog
Ubicazione
Articolo unico
Biglietti
Estensione o servizio esterno
Oratori
Componente Contatti: offre una connessione tra articoli (discorsi) e utenti (relatori)
Programma
Articoli come blog di categoria (override) o Modulo articoli
Sponsor
Modulo articoli
Informazioni generali
(Note legali, Termini e condizioni, Informativa sulla privacy)
Articoli singoli
Dopo aver controllato alcune estensioni degli eventi, abbiamo deciso di utilizzare solo Core.
In questo articolo approfondirò i dettagli della "Call for Speakers".
Fase 4: Preparativi
- Creare un gruppo di utenti “Speakers” come sottogruppo "Registered"
- Consentire la registrazione dell'utente con l'attivazione da parte dell'utente
- Creare una categoria "Talks" e dare al gruppo di utenti "Speakers" l'autorizzazione a creare e modificare i propri articoli
- Creare una categoria di contatto "Speakers" e dare al gruppo di utenti "Speakers" l'autorizzazione a modificare la propria
- Attivare il plugin "User - Contact Creator" impostando la categoria "Speakers" come predefinita e "Pubblica automaticamente il contatto" su No. Il plugin creerà automaticamente un contatto quando un utente si registra nel sito web
- Creare una voce di menu per la registrazione
- Crea voci di menu per il login e il logout
- Creare un articolo "Grazie" con informazioni sui passaggi successivi e collegarvi ad esso in una voce di menu (nascosta)
- Crea un articolo "La mia pagina" e la voce di menu corrispondente, qui pubblicheremo informazioni specifiche per l'oratore che ha effettuato l'accesso
- Creare una voce di menu per inviare un articolo, nelle opzioni specificare la categoria "Talks" e reindirizzare l'utente alla pagina "Grazie" dopo l'invio
- Per una migliore panoramica, inserisci le voci di menu relative agli Speakers in un menu personale (Menu speakersi) con i seguenti livelli di accesso:
- "Registrati" -> accesso ospite
- "Submit talk" -> accesso registrato
- "La mia pagina" -> accesso registrato
- "Logout" -> accesso registrato
"Grazie" -> accesso registrato e nascosto
Registrazione e login
Le funzioni principali di Joomla vanno bene e non hanno bisogno di ulteriori lavori.
Invia articolo (discorso)
Un discorso è un articolo di Joomla e la presentazione dovrebbe essere il più semplice possibile. Un discorso ha bisogno di un titolo e di una descrizione. Poiché la nostra conferenza offrirà colloqui in inglese e in tedesco, vogliamo chiedere la preferenza dell'oratore. Per questo creiamo un campo personalizzato di tipo radio con le opzioni: Inglese, tedesco e nessuna preferenza. Inoltre offriamo la possibilità di fare il talk da remoto. Qui abbiamo bisogno anche di un campo personalizzato radio con le opzioni: Live, Online e non lo so ancora.
Per facilitare la presentazione di un talk creeremo un override di com_content/form/edit.php. Nell'override rimuoviamo il layout delle schede e tutti (per il nostro caso d'uso) gli elementi non necessari e rendiamo il campo personalizzato manualmente:
<?php
/**
* @package Joomla.Site
* @subpackage com_content
*
* @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Router\Route;
/** @var \Joomla\Component\Content\Site\View\Form\HtmlView $this */
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->getDocument()->getWebAssetManager();
$wa->useScript('keepalive')
->useScript('form.validate')
->useScript('com_content.form-edit');
$this->tab_name = 'com-content-form';
$this->ignore_fieldsets = ['image-intro', 'image-full', 'jmetadata', 'item_associations'];
$this->useCoreUI = true;
// Create shortcut to parameters.
$params = $this->state->get('params');
// This checks if the editor config options have ever been saved. If they haven't they will fall back to the original settings
if (!$params->exists('show_publishing_options')) {
$params->set('show_urls_images_frontend', '0');
}
?>
<div class="edit item-page">
<?php if ($params->get('show_page_heading')) : ?>
<div class="page-header">
<h1>
<?php echo $this->escape($params->get('page_heading')); ?>
</h1>
</div>
<?php endif; ?>
<form action="<?php echo Route::_('index.php'); ?>" method="post" name="adminForm" id="adminForm" class="form-validate form-vertical">
<fieldset>
<?php echo $this->form->renderField('catid'); ?>
<?php echo $this->form->renderField('title'); ?>
<?php if (is_null($this->item->id)) : ?>
<?php $this->form->setFieldAttribute('alias', 'type', 'hidden'); ?>
<?php echo $this->form->renderField('alias'); ?>
<?php endif; ?>
<?php echo $this->form->renderField('language', 'com_fields'); ?>
<?php echo $this->form->renderField('typ', 'com_fields'); ?>
<?php echo $this->form->renderField('articletext'); ?>
<?php if ($this->captchaEnabled) : ?>
<?php echo $this->form->renderField('captcha'); ?>
<?php endif; ?>
<?php if ($this->item->params->get('access-change')) : ?>
<?php echo $this->form->renderField('featured'); ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('featured_up'); ?>
<?php echo $this->form->renderField('featured_down'); ?>
<?php echo $this->form->renderField('publish_up'); ?>
<?php echo $this->form->renderField('publish_down'); ?>
<?php endif; ?>
<?php endif; ?>
<?php if (Multilanguage::isEnabled()) : ?>
<?php echo HTMLHelper::_('uitab.addTab', $this->tab_name, 'language', Text::_('JFIELD_LANGUAGE_LABEL')); ?>
<?php echo $this->form->renderField('language'); ?>
<?php echo HTMLHelper::_('uitab.endTab'); ?>
<?php else : ?>
<?php echo $this->form->renderField('language'); ?>
<?php endif; ?>
<?php echo $this->form->renderControlFields(); ?>
</fieldset>
<div class="d-grid gap-2 d-sm-block mb-2">
<button type="button" class="btn btn-primary" data-submit-task="article.apply">
<span class="icon-check" aria-hidden="true"></span>
<?php echo Text::_('JSAVE'); ?>
</button>
<button type="button" class="btn btn-primary" data-submit-task="article.save">
<span class="icon-check" aria-hidden="true"></span>
<?php echo Text::_('JSAVEANDCLOSE'); ?>
</button>
<?php if ($this->showSaveAsCopy) : ?>
<button type="button" class="btn btn-primary" data-submit-task="article.save2copy">
<span class="icon-copy" aria-hidden="true"></span>
<?php echo Text::_('JSAVEASCOPY'); ?>
</button>
<?php endif; ?>
<button type="button" class="btn btn-danger" data-submit-task="article.cancel">
<span class="icon-times" aria-hidden="true"></span>
<?php echo Text::_('JCANCEL'); ?>
</button>
<?php if ($params->get('save_history', 0) && $this->item->id) : ?>
<?php echo $this->form->getInput('contenthistory'); ?>
<?php endif; ?>
</div>
</form>
</div>
Il modulo avrà questo aspetto:

Campi
Il sito web sarà almeno bilingue (inglese e tedesco). Per ottenere i campi personalizzati nelle due lingue, utilizziamo stringhe linguistiche e sostituzioni linguistiche per le etichette e i valori:


Editor
Come puoi vedere nel modulo di invio sopra, il campo dell'editor offre pochissime opzioni di formattazione. Questo è intenzionale e lo otteniamo modificando le impostazioni nel plugin TinyMCE:

Il pulsante “Contenuto CMS” può essere rimosso modificando il livello di accesso dei plugin dei pulsanti dell'editor:

Dopo l'invio
Dopo aver inviato una presentazione, il relatore verrà reindirizzato alla pagina “Grazie”:

Cosa succede dopo? Ve lo mostrerò nel prossimo articolo ;-) Restate sintonizzati!
Lo sviluppo del sito web della Joomla World Conference 2026 (conference.joomla.org) è quasi completato e siamo lieti di annunciare che la vendita dei biglietti inizierà a breve! Questo articolo ha illustrato la pianificazione strategica alla base di questa entusiasmante iniziativa. Ora tocca a voi partecipare. Inviate le vostre proposte di intervento e preparatevi a unirvi a noi dal 16 al 18 ottobre a Potsdam, in Germania, per un'esperienza Joomla eccezionale.
Alcuni articoli pubblicati sulla rivista Joomla Community Magazine rappresentano l'opinione personale o l'esperienza dell'autore su un argomento specifico e potrebbero non essere in linea con la posizione ufficiale del progetto Joomla.