2012-11-24 5 views
5

Sto usando un'estensione plugin personalizzata con Joomla 2.5. Questo plug-in è mirato per una singola pagina sul mio sito. Ma per qualche ragione ho notato che carica il file css su ogni singola pagina.estensione plugin joomla carica file css su ogni pagina

Il codice per i carichi plugin Questo file CSS:

$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 

non mi assumo questo è comune, ma io non sono sicuro di plugin. Posso farlo solo applicare la pagina che voglio invece di ogni singola pagina. Qualche idea su come eseguire il debug di questo sarebbe apprezzato.

Il plugin stampa una semplice tabella su una pagina dell'articolo e utilizza la funzione plug onContentPrepare

+0

Qual è il plugin facendo? Ad esempio, se si rivolge a una specifica classe/id, è possibile cercare la classe/id e, se esiste, includere il file css. –

risposta

5

Utilizzare questi frammenti per gestire il problema:

1) Carico CSS controllando il voce di menu attiva

$menu = &JSite::getMenu(); 
$menuItem = $menu->getActive(); 
$Itemid = $menuItem->id; 
if($Itemid!=1) 
{ 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

2) carico CSS sulla componente

if (JRequest::getCmd('option') == 'com_k2'){ 
     $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

3) CSS Caricare solo in home page

<?php if(JRequest::getInt('Itemid') == $menu->getDefault()) { 
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
}?> 

4) CSS di carico su di menu attivo id

<?php 
$menuID = JSite::getMenu()->getActive()->id ; 
    if ($menuID == '6') 
    { 
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
    } 
?> 

5) Carico CSS sulla lingua attiva:

$lang =& JFactory::getLanguage(); 
switch ($lang) { 
case 'en-gb': 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
break; 
} 

6) Carica CSS sugli utenti

$user =& JFactory::getUser(); 
if($user->get('id')==0){ 
//user is logged in 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

7) Carico CSS su URL

$u =& JFactory::getURI(); 
if($u=="http://www.example.com/joomla/index.php?task=view&id=12&Itemid=29") 
{ 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 
+0

Aha! # 1 lo ha fatto.Proprio di @Lodder mentre era vicino.Grande lista di opzioni tra i due! Grazie. – Tom

+0

Gracias, felice di essere stato in grado di aiutare – Theodore

0

Provare a usare qualcosa di simile al seguente:

$application = JFactory::getApplication(); 
$menu = $application->getMenu(); 
$item = $menu->getItem(1); 
if ($item == 1){ 
    $doc = JFactory::getDocument(); //Remove it you already have this line 
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

Modificare il numero "1" a qualsiasi voce di menu della pagina appartiene a.

Si prega di notare che non ho provato questo quindi fammi sapere se funziona. Se così non fosse, vedrò cosa posso scavare.

+0

Chiudi, grazie. Questo codice lo interrompe in gran parte dal caricamento (stranamente appare ancora nella radice del sito). Sto giocando con la voce di menu id in quanto ora non funziona sulla pagina in cui voglio che funzioni ... sigh. Cercherò di più se 'getMenu' o' getItem' stanno facendo quello che dovrebbero. – Tom

+0

Provato tutto, senza fortuna. Ho provato 'getItems ('menutype', 'mymenu')' che almeno restituisce qualcosa. 'getItem' no. Altre idee? – Tom

0

Non penso che ottenere Itemid all'interno di plugin funzionerà. Ho un suggerimento che si sposta il codice CSS nel modello index.php e controllare la condizione itemid che funzionerà lì.

0

A quale evento risponde il plug-in? In che gruppo è? Per molti eventi è possibile controllare il contesto $ della pagina. Se sai che caricherà solo su una determinata pagina, usa quegli identificatori.

ad es. qui è una linea dal plugin impaginazione:

if ($ params-> get ('show_item_navigation') & & ($ context == 'com_content.articolo ') & & ($ vista == 'articolo')) {

o questo da LoadModule

$canProceed = $context == 'com_content.article'; 
    if (!$canProceed) { 
     return; 
    } 
+0

L'evento è: 'onContentPrepare' – Tom

+0

Destra in modo che si verifichi su ogni singola pagina. Quindi quello che vuoi fare è un if ($ context! = Qualunque) {return;} guarda alcuni degli altri plugin di contenuto che vedrai che in pratica stai controllando l'url. – Elin

+0

Non sono sicuro di capire cosa sia la parte "qualunque"? Gli altri plug-in hanno alcune cose quando inserisci la risposta, ma non sono sicuro di cosa significano. Ad esempio, loadmodule non ho idea di cosa sia "com_content.article". – Tom