Vô hiệu hóa tải tập lệnh trong đầu


8

Làm cách nào để vô hiệu hóa tải

  • mootools-core.js
  • core.js

Trong <head>mà không sử dụng một thành phần / plugin bên thứ ba?


Phiên bản nào của Joomla bạn đang sử dụng?
TryHarder

@moomoochoo Tôi đang sử dụng j Joomla 3.2
web-tiki

Câu trả lời:


18

Tôi đang sử dụng Joomla 3.2, ở đầu tempate của tôi, tôi đặt:

$doc = JFactory::getDocument();

$dontInclude = array(
'/media/jui/js/jquery.js',
'/media/jui/js/jquery.min.js',
'/media/jui/js/jquery-noconflict.js',
'/media/jui/js/jquery-migrate.js',
'/media/jui/js/jquery-migrate.min.js',
'/media/jui/js/bootstrap.js',
'/media/system/js/core-uncompressed.js',
'/media/system/js/tabs-state.js',
'/media/system/js/core.js',
'/media/system/js/mootools-core.js',
'/media/system/js/mootools-core-uncompressed.js',
);

foreach($doc->_scripts as $key => $script){
    if(in_array($key, $dontInclude)){
        unset($doc->_scripts[$key]);
    }
}

Điều này ngăn những tập lệnh đó được đưa vào, thêm hoặc xóa tập lệnh khi cần


3
Điều này đã thất bại trong dự án cuối cùng của tôi (j Joomla 3.3.6). Tôi đã thêm JURI::root(true).trước các đường dẫn kịch bản và nó hoạt động.
web-tiki

5

Bạn có thể bỏ đặt nó trong mẫu

unset(
  $this->_scripts['/media/jui/js/mootools-core.js'],
  $this->_scripts['/media/jui/js/core.js']);

Điều này sẽ xóa cả hai tệp JS khỏi Tiêu đề.


4

Trong Joomla 3.x, bạn có thể gọi JHtml::_('jquery.framework')trong mẫu của mình để tải jQuery mà không cần Mootools. Điều này tải jQuery ở chế độ không xung đột theo mặc định, vì vậy nếu bạn cần chế độ bình thường, chỉ cần thêm tham số thứ hai là false : JHtml::_('jquery.framework', false).

http://docs.j Joomla.org/J3.2:Javascript_Frameworks


2

Tôi đã sử dụng cái này:

foreach ($doc->_scripts as $script => $value)
{
    if (preg_match('/media\/jui/i', $script))
      unset($doc->_scripts[$script]);
}

2
Kể từ khi bạn needlechuỗi là không thay đổi và mục đích duy nhất là để tạo ra một trận đấu case-insensitive, sau đó nó sẽ được thực hành tốt hơn để sử dụng stripos () ...if (stripos($script, 'media/jui') !== false)
mickmackusa

0

Giải pháp của @ContextSwitch không hoạt động đối với tôi do một số tập lệnh đã được tải sau khi mẫu được xử lý nên việc không đặt các tệp ở giai đoạn đó không ảnh hưởng đến các tệp đó.

Vì vậy, tôi đã phải thực hiện giải pháp tương tự nhưng sử dụng một plugin đơn giản ràng buộc với onBeforeCompileHeadsự kiện. Theo mô tả của tôi ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.