it-swarm-eu.dev

Qual è il metodo corretto per ottenere l'alias della pagina attiva

Voglio caricare alcuni JS ma solo sulla pagina in cui è necessario.

Sto cercando di usare l'alias dell'articolo attivo per determinarlo.

Il mio codice nel file component.php è:

   $path = &JFactory::getURI()->getPath();
   $length = strlen($path);

   for ($i = $length; $i >= 0 ; $i--)
         if ($path[$i] == '/')
            return substr($path, $i + 1, $length - $i - 1);

   $alias = $path;

e questa parte nella <testa>:

if ($alias == "elearning")) { ?>
    <script src="/media/system/js/ddslick.js" type="text/javascript"></script>
<?php } ?>

Non sembra funzionare.
Qualche suggerimento su dove sbaglio?

6
BodgeIT

Una possibilità è modificare leggermente il layout per consentire più controlli del modello. Ciò non è direttamente correlato all'ottenimento dell'alias dell'articolo, ma a un altro approccio.

Per fare ciò aggiungi questo campo all'interno del file templateDetails.xml

<field name="htmllayout" type="list" default="center"
    label="HTML Layout"
    description="Dynamic layout style from index.php"
    filter="Word"
>
    <option value="main">main</option>
    <option value="raw">Raw</option>
</field>

Puoi aggiungere tutte le opzioni di cui hai bisogno, ne ho 2 come esempio. Questo creerà un'impostazione nel template manager. L'apertura del modello in Gestione modelli dovrebbe consentire anche di modificare tale impostazione. La chiave è lasciare il modello corrente su main, quindi duplicare il modello (duplica solo le impostazioni, non i file). In questo secondo modello è possibile modificare il layout HTML e utilizzare la scheda "assegnazione di menu" per specificare quale pagina può essere utilizzata. Quindi nel caso di un alias di un articolo, purché l'articolo abbia una voce di menu associata (molto probabilmente con lo stesso alias), dovrebbe essere abbastanza facile assegnare quel modello all'alias specificato (e tutti gli altri).

Quindi fondamentalmente avrai un modello specificato per l'uso solo con pagine specifiche.

Ciò richiede anche alcune modifiche a index.php.

aggiungi quanto segue all'inizio del file, all'interno del primo blocco php:

$htmllayout = $this->params->get('htmllayout');

Quindi, ovunque sia necessario specificare qualcosa di diverso per un layout speciale, procedere come segue:

<?php if($htmllayout=='LAYOUTNAME'): ?>
anything you need here
<?php endif; ?>
1
Jordan Ramstad

Se stai parlando dell'alias dell'articolo, invoca il modello di contenuto o leggilo dal database.

Se stai parlando dell'alias nell'URL, ottenerlo non è facile: Joomla ha tanti modi per generarlo: sarà diverso se arriverai all'articolo:

  • tramite un blog o un elenco di categorie, si baserà sull'alias dell'articolo;
  • attraverso una voce di menu diretta, si baserà sull'alias della voce di menu;
  • attraverso una ricerca, decide Joomla;
  • hai un'estensione SEF? tu fai le tue regole

E questo è solo per l'ultima sezione dell'alias; la prima parte (o "percorso") dipende dalla navigazione che ti ha portato all'articolo.

Per darti un'idea di quanto sia complesso, un'estensione SEF mainstream invoca il frontend per ottenere l'alias, poiché hanno ovviamente scoperto che non era affidabile generare un alias nel backend.

In conclusione: dimentica l'alias.

Modi al riguardo: $ input = JFactory :: getApplication () -> input;

  • Usa l'id della voce di menu: $ input-> get ('Itemid');
  • Utilizzare il nome del componente/vista: $ input-> get ('opzione'). '' . $ Input-> get ( 'vista') ;;
  • Usa l'id articolo: $ input-> get ('id'); (ma controlla se option = com_content & view = article)

Spero che questo risponda alla tua domanda.

1
Riccardo Zorn

Se desideri caricare un js solo su determinate pagine, prova a usare jumi. Quel wokerd per me. http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content/102

0
Eva Farkasne