it-swarm-vi.com

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

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 thành phần/plugin của bên thứ ba?

8
web-tiki

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 không cho các tập lệnh được đưa vào, thêm hoặc xóa tập lệnh khi cần

18
ContextSwitch

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 đề.

5
Harald Leithner

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

4
flutterderp

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
Aerendir

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 sự kiện onBeforeCompileHead. Theo mô tả của tôi ở đây .

0
Mohd Abdul Mujib