Vedo di spiegare a grandi linee quello che ho fatto e che si può vedere qui:
http://www.actaplantarum.org/forum/
Non esiste un evento specifico che possa inserire il menu in quel punto della testata, si potrebbe inserire una riga con un evento personalizzato ma sarebbe comunque una modifica al codice originale.
Una estensione aggiunge un nuovo codice ai file di sistema, non modifica il codice esistente, allora ho utilizzato un sotterfugio: ho utilizzato l'evento che si trova prima della testata e quello immediatamente successivo.
Nel primo evento ho creato il file "overall_header_body_before.html" dove ho inserito il tag di inizio commento
Codice: Seleziona tutto
<!-- ESTENSIONE TESTATA MENU by Micogian - inserimento tag commento del codice originale della testata -->
<!--
Questo consente di considerare commento tutto quello che viene dopo.
Nel secondo evento ho creato il file "overall_header_navbar_before.html" dove ho inserito la fine del commento
-->
e a seguire il mio codice, vale a dire la mia testata e il menu.
Per il funzionamento del menu è necessario aggiungere il css nel file "overall_header_stylesheets_after.html"
Codice: Seleziona tutto
<!-- ESTENSIONE TESTATA MENU by Micogian - inizio inserimento css -->
<link href="./ext/acta/testata/includes/navigation.css" rel="stylesheet" type="text/css" media="screen">
<!-- ESTENSIONE TESTATA MENU by Micogian - fine inserimento css -->
e i file js nel footer.
file "overall_footer_after.html"
Codice: Seleziona tutto
<!-- ESTENSIONE MENU TESTATA by Micogian - inizio inserimento js -->
<script type="text/javascript" src="ext/acta/testata/includes/jquery_002.js"></script>
<script type="text/javascript" src="ext/acta/testata/includes/jquery.js"></script>
<script type="text/javascript" src="ext/acta/testata/includes/scripts.js"></script>
<!-- ESTENSIONE MENU TESTATA by Micogian - fine inserimento js -->
L'estensione così sarebbe già funzionante, io nel mio forum ho inserito anche un controllo degli utenti che mi permette di inserire nel menu dei links riservati allo Staff e questo tramite il file "listener.php"
Codice: Seleziona tutto
<?php
namespace acta\testata\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
protected $template;
protected $user;
public function __construct(\phpbb\template\template $template,\phpbb\user $user)
{
$this->template = $template;
$this->user = $user;
}
static public function getSubscribedEvents()
{
return array('core.user_setup' => 'setup1',);
}
public function setup1($event)
{
global $user;
if ($this->user->data['group_id'] == 5 || $this->user->data['user_id'] == 2 )
{
$this->template->assign_vars(array(
'STAFF' => true )
);
}
}
}
In pratica il Gruppo 5 e l'utente 2 visualizzano una parte riservata del menu, gli altri no ma a chi non interessa questa limitazione può farne a meno.