2012-11-24 29 views
5

Używam niestandardowego rozszerzenia wtyczki z Joomla 2.5. Ta wtyczka jest przeznaczona dla pojedynczej strony w mojej witrynie. Ale z jakiegoś powodu zauważyłem, że ładuje plik css na każdej stronie.rozszerzenie joomla ładuje plik css na każdej stronie

Kod dla obciążeń wtyczki tego pliku css:

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

ja nie ponoszą jest to powszechne, ale nie jestem pewien wtyczek. Czy mogę to zrobić tylko zastosować stronę, którą chcę, zamiast każdej strony. Wszelkie przemyślenia na temat debugowania tego będą mile widziane.

Wtyczka drukuje prostą tabelę na stronie artykułu i wykorzystuje funkcję wtyczki onContentPrepare

+0

Co robi plugin? Na przykład, jeśli celuje w konkretną klasę/identyfikator, możesz wyszukać klasę/identyfikator, a jeśli istnieje, to uwzględnić plik css. –

Odpowiedz

5

Poniższe fragmenty zarządzać problem:

1) CSS Załaduj zaznaczając aktywny element menu

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

2) CSS obciążenia na składniku

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

3) CSS ładować tylko w stronie głównej

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

4) CSS obciążenia przy aktywnym menu id

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

5) CSS obciążenia przy aktywnym języku:

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

6) Wczytaj CSS do użytkowników:

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

7) CSS obciążenia na 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 zrobił to, podpierając @Lodder, ponieważ był blisko., Wielka lista opcji btw! Dzięki – Tom

+0

Gracias mate, cieszę się, że mogłem pomóc – Theodore

0

Spróbuj użyć coś jak następuje:

$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'); 
} 

Zmian numer „1” na cokolwiek punkcie menu strony należy do.

Uwaga Nie testowałem tego, więc daj mi znać, czy to działa. Jeśli nie, zobaczę, co mogę wykopać.

+0

Zamknij, dzięki. Ten kod definitywnie powstrzymuje go od przeważającego ładowania (co dziwne, nadal pojawia się w katalogu głównym witryny). Gram z identyfikatorem elementu menu, ponieważ nie działa on również na stronie, z którą chcę pracować ... westchnienie. Będę badać więcej, jeśli 'getMenu' lub' getItem' robią to, co powinny. – Tom

+0

Próbowałem wszystkiego, bez powodzenia. Próbowałem 'getItems ('menutype', 'mymenu')' co najmniej zwraca coś. 'getItem' nie ma. Jakieś inne pomysły? – Tom

0

Nie sądzę, że będzie działać Itemid w ramach . Mam sugestię, aby przenieść kod css w szablonie index.php i sprawdzić warunek itemid, który będzie tam działał.

0

Na jakim wydarzeniu odpowiada wtyczka? W której grupie? W przypadku wielu wydarzeń możesz sprawdzić $ kontekst strony. Jeśli wiesz, że będzie on ładowany tylko na określonej stronie, użyj tych identyfikatorów.

np. tutaj jest wiersz z wtyczki stronicowania:

jeśli ($ params-> get ('show_item_navigation') & & ($ context == 'com_content.Artykuł ') & & ($ view == 'artykuł')) {

czy to z LoadModule

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

Zdarzenie to: 'onContentPrepare' – Tom

+0

Prawo, tak dzieje się na każdej stronie. Więc jeśli chcesz (if context! = Whatever) {return;} spójrz na inne wtyczki treści, zobaczysz, że sprawdzasz adres URL. – Elin

+0

Nie jestem pewien, czy rozumiem, czym jest "cokolwiek"? Inne wtyczki zawierają pewne rzeczy, ale nie jestem pewien, co one oznaczają. Na przykład loadmodule Nie mam pojęcia, co to jest "com_content.article". – Tom