2012-09-18 23 views
11

Tôi đã là một nhà phát triển Joomla trong gần một năm nay. Tôi đã phải vật lộn để nhập khẩu jQuery vào Joomla hàng ngày. Joomla đi kèm với mootools. Khi tôi nhập jQuery nó bị treo. Ngoài ra khi tôi tạo ra các mô-đun, tôi phải nhập jQuery vào mỗi mô-đun mà làm cho trang web chậm. Đôi khi nó làm cho toàn bộ trang web bị treo. Tôi muốn cả hai mootools và jquery để làm việc tay trong tay vì vậy tôi có thể sử dụng cả hai mà không có bất kỳ tai nạn.Nhập jQuery vào Joomla

Cách tốt nhất để nhập jQuery vào Joomla là gì? Có một địa điểm cụ thể mà việc nhập khẩu nên được thực hiện để sử dụng một thư viện jquery toàn trang web (cả phụ trợ và lối vào)?

Cảm ơn

Trả lời

18

Đây là mã chúng tôi sử dụng để đảm bảo chỉ có 1 bản sao của jQuery được nhập. Nó chỉ đơn giản sẽ kiểm tra xem nếu jQuery đang được nhập khẩu và nếu không, sau đó chúng tôi nhập khẩu nó :)

Joomla 2,5

<?php 
    $app = JFactory::getApplication(); 
    if (!$app->get('jquery')) 
    { 
    $app->set('jquery', true); 
    JFactory::getDocument()->addScript(JUri::root() . 'templates/template_name/js/jquery.js'); 
    } 
?> 

Joomla 3.x (không có chế độ xung đột):

JHtml::_('jquery.framework'); 

Joomla 3.x (chế độ bình thường):

JHtml::_('jquery.framework', false); 

Bạn cần phải chèn mã này vào index.php mẫu của bạn, tốt nhất là ở gần đầu để bạn nhớ vị trí của nó. Nếu bạn không muốn ghi đè lên tập tin index.php của mẫu của bạn, sau đó bạn cũng có thể phát triển một nhỏ Plugin

Cập nhật:

Như Bobby đã nêu. Rất nhiều phần mở rộng bao gồm bản sao jQuery của riêng họ và rất nhiều trong số chúng không sử dụng phương pháp này và do đó gây ra xung đột. Tất cả những gì tôi biết là bất kỳ nhà phát triển giỏi nào cũng nên biết rằng nhiều thư viện jQuery gây ra xung đột và nên sử dụng mã này.

+0

Cảm ơn sự hỗ trợ – Techie

+0

@ Dasun - bạn được chào đón – Lodder

+0

Tôi thích điều này - trong đó bạn đưa vào tệp nào? Cũng đáng chú ý là một vài phần mở rộng Joomla bao gồm phiên bản jQuery của riêng họ. –

0

Sử dụng Joomla! 3.0 - nếu bạn đã trải qua thời gian dài, bạn nên giúp đỡ với số Joomla! JavaScript Working Group được xây dựng để giải quyết vấn đề này.

+0

Cảm ơn sự hỗ trợ – Techie

+1

"Sử dụng X" không bao giờ là câu trả lời * tuyệt vời * cho "Làm thế nào tôi có thể sử dụng Y để ..." câu hỏi. Và ngay cả khi 3.0 giải quyết vấn đề một cách kỳ diệu, sẽ rất tuyệt nếu có * một số chi tiết như thế nào. –

+0

Vì vậy, @BobbyJack bạn đã đọc liên kết chưa? Giống như hầu hết mọi người, chúng tôi thấy vấn đề không thực sự có thể khắc phục được trong phiên bản 3.0 vì không có hỗ trợ khung và người dùng cài đặt các tiện ích mở rộng/plugin/mẫu/tùy chỉnh "" tải tất cả các loại thư viện JS lỗi thời (bao gồm jQuery)) và không có cách nào để ngăn chặn chúng hoặc kiểm tra xem thư viện có được tải hay không. Không có "đúng cách" để làm điều đó được nêu ra. Điều xấu của tôi khi trỏ đến một liên kết đề cập cụ thể đến chủ đề này. – Craig

0

Trong Joomla 3.x JApplication không mở rộng từ JObject nữa có nghĩa là khi bạn muốn sử dụng cùng mã trong phần mở rộng của bạn cho Joomla 2.5 và Joomla 3.x thì bạn phải viết nếu điều kiện như

if (!version_compare(JVERSION, '3', 'ge') && !JFactory::getApplication()->get('jquery', false)) { 

Nếu không nó sẽ sụp đổ !! Bạn có thể tìm thấy ví dụ tại đây https://github.com/Digital-Peak/DPExtensions/blob/master/mod_dpslider/tmpl/default.php#L13

2

Đây là một plugin tuyệt vời.

http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327

Plugin này có nghĩa là để giúp làm sạch và giải quyết các mặt trước và sau kết thúc vấn đề khi sử dụng trường hợp của jQuery cùng với các thư viện Mootools .

những gì nó làm OUT-OF-THE BOX

  • gọi jQuery và jQuery UI thư viện từ CDN của Google (có hoặc không có giao thức) - nhưng bạn có thể làm điều đó tại địa phương quá,
  • nơi jQuery thư viện sau MooTools đòi hỏi khả năng tương thích hoàn hảo,
  • thêm noConflict() mã cùng với các cuộc gọi thư viện jQuery,
  • dải ra thêm jQuery và jQuery UI thư viện, trong đó có noConflict() cuộc gọi bổ sung bởi các module hay plugin khác,
  • cho phép bạn chọn kiểu dáng cơ bản của jQuery UI hoặc chủ đề tùy chỉnh.

GÌ BẠN CÓ THỂ Tweak

  • vô hiệu hóa các thư viện MooTools ngập ngừng trong frontend,
  • kích hoạt hoặc vô hiệu hóa các plugin trong phần cụ thể của trang web, từ mẫu để trang duy nhất,
  • báo cáo
  • sử dụng để nhận phản hồi về những gì công cụ plugin đã thực hiện, hãy
  • thêm hoặc xóa tập lệnh và biểu định kiểu,
  • các dòng trống nằm bên trái sửa đổi thực hiện để trang,
  • ngăn chặn một số thư viện để được lột ra,
  • sửa đổi cách làm việc của động cơ hoạt động bằng cách mặc định (không thêm hoặc loại bỏ noConflict() mã ...),
+0

Cảm ơn bạn đã quay lại và chỉ ra điều này. Trải nghiệm của bạn với plugin này là gì? nó có tốt không –

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