2012-11-24 25 views
5

Tôi đang sử dụng phần mở rộng plugin tùy chỉnh với Joomla 2.5. Plugin này được nhắm mục tiêu cho một trang trên trang web của tôi. Nhưng đối với một số lý do tôi nhận thấy nó tải các tập tin css trên mỗi trang duy nhất.joomla plugin mở rộng tải tệp css trên mỗi trang

Mã cho tải Plugin css này file:

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

Tôi không giả định này là phổ biến nhưng tôi không chắc chắn về các plugin. Tôi có thể làm cho nó chỉ áp dụng các trang tôi muốn thay vì mỗi trang duy nhất. Bất kỳ suy nghĩ về cách gỡ lỗi này sẽ được đánh giá cao.

Plugin in một bảng đơn giản trên một trang bài viết và sử dụng các plugin function onContentPrepare

+0

được plugin làm gì vậy? Ví dụ: nếu nó nhắm mục tiêu một lớp/id cụ thể, bạn có thể tìm kiếm lớp/id và nếu nó tồn tại thì hãy bao gồm tệp css. –

Trả lời

5

Sử dụng những đoạn để quản lý vấn đề của bạn:

1) Tải trọng CSS bằng cách kiểm tra hoạt động mục trình đơn

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

2) tải CSS khi thành phần

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

3) Tải CSS chỉ tại trang chủ

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

4) Tải CSS khi id đơn hoạt động

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

5) Nạp CSS vào ngôn ngữ tích cực:

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

6) Tải CSS khi người dùng

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

7) Tải trọng CSS trên 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 đã làm nó. Đạo cụ để @Lodder như ông đã gần. Danh sách tuyệt vời của các tùy chọn btw! – Tom

+0

Người bạn đời của Gracias, vui vì tôi đã có thể giúp – Theodore

0

Hãy thử sử dụng một cái gì đó như sau:

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

Thay đổi số "1" để bất cứ điều gì mục menu trang thuộc về.

Xin lưu ý rằng tôi chưa thử nghiệm điều này để cho tôi biết nếu nó hoạt động. Nếu không, tôi sẽ xem những gì tôi có thể đào lên.

+0

Đóng, cảm ơn. Mã này chắc chắn dừng nó từ chủ yếu là tải (kỳ quặc nó vẫn xuất hiện trên thư mục gốc của trang web). Tôi đang chơi xung quanh với id mục trình đơn vì nó cũng không hoạt động trên trang mà tôi muốn nó hoạt động với ... tiếng thở dài. Tôi sẽ nghiên cứu nhiều hơn nếu 'getMenu' hoặc' getItem' đang làm những gì chúng được cho là. – Tom

+0

Đã thử mọi thứ, không có may mắn. Đã cố gắng 'getItems ('menutype', 'mymenu')' mà ít nhất là trả về một cái gì đó. 'getItem' thì không. Bất kỳ ý tưởng nào khác? – Tom

0

Tôi không nghĩ rằng việc nhận Itemid bên trong plugin sẽ hoạt động. Tôi có một gợi ý rằng bạn di chuyển mã css trong template index.php và kiểm tra điều kiện itemid nó sẽ làm việc ở đó.

0

Plugin sự kiện phản hồi là gì? Nó thuộc nhóm nào? Đối với nhiều sự kiện, bạn có thể kiểm tra bối cảnh $ của trang. Nếu bạn biết rằng nó sẽ chỉ tải trên một trang nhất định, hãy sử dụng các số nhận dạng đó.

ví dụ: đây là một dòng từ plugin pagination:

if ($ params-> get ('show_item_navigation') & & ($ context == 'com_content.bài viết ') & & ($ xem == 'bài')) {

hay này từ LoadModule

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

Sự kiện này là: 'onContentPrepare' – Tom

+0

Quyền xảy ra trên mọi trang. Vì vậy, những gì bạn muốn làm là làm một if ($ bối cảnh! = Bất cứ điều gì) {return;} nhìn vào một số các plugin nội dung khác, bạn sẽ thấy rằng về cơ bản bạn đang kiểm tra url. – Elin

+0

Tôi không chắc mình hiểu phần "bất cứ điều gì" là gì? Các plugin khác có một số nội dung khi bạn đưa ra câu trả lời nhưng tôi không chắc chắn ý nghĩa của chúng. Ví dụ loadmodule tôi không có ý tưởng gì 'com_content.article' là. – Tom

Các vấn đề liên quan