2013-05-23 48 views
8

Tôi đang cố gắng để loại bỏ các kịch bản không mong muốn từ mẫu tiêu đề tùy chỉnh joomla của tôi, mà tôi đã quản lý để loại bỏ tất cả mọi thứ trừ này:Joomla 3.X - Xóa tập lệnh chú giải công cụ khỏi tiêu đề?

<script type="text/javascript"> 
jQuery(document).ready(function() 
       { 
        jQuery('.hasTooltip').tooltip({}); 
       }); 
    </script> 

Tôi đã tìm kiếm nhiều giờ và tôi đã cố gắng rất nhiều điều cần xóa nó đi, nhưng tôi dường như không thể loại bỏ nó. Dưới đây là những gì tôi đã thực hiện để xóa các tập lệnh khác mà tôi không muốn (đối với bất kỳ ai khác có vấn đề này):

# unset frameworks 
JHtml::_('bootstrap.framework',false); 
JHtml::_('jquery.framework',false); 

# unset scripts 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 

Nếu ai đó có thể giúp tôi xóa tooltip javascript, điều đó thật tuyệt vời. Oh và tôi không muốn chạm vào các tập tin lõi, vì vậy tôi đang cố gắng loại bỏ nó khỏi chính tệp mẫu index.php.

+0

Dường như không có sự khắc phục rõ ràng cho vấn đề này trong 3.4.0. –

Trả lời

4

Một số thành phần/Module/Plugin đang gọi hàm JHTML :: _ ('behavior.tooltip'). và chức năng đó thêm mã của bạn.

bạn có thể làm:

Cách bẩn: đi đến thư viện \ cms \ html \ bootstrap.php và thay đổi các tập tin vào phương pháp tooltip(). nhưng hãy nhớ đó là một tập tin cốt lõi để nâng cấp có thể vượt qua những thay đổi của bạn.

Cách sạch sẽ, tìm thành phần bổ sung mã này và xóa hoặc thay đổi mã đó.

Good Luck

+1

Thành phần gọi JHtml :: _ ('bootstrap.tooltip'); (trong đó có rất nhiều) cũng sẽ làm cho mã này được thêm vào. –

3

Bạn sẽ phải phân tích cú pháp theo cách thủ công $doc->_script. Mảng $doc->_scripts chứa các tập lệnh được liên kết với một nguồn khác trong khi $doc->_script là dành cho các khai báo tập lệnh giống như chú giải công cụ.

+0

Tôi đã thử sử dụng $ doc -> _ script, nhưng nó không lấy mã chú giải công cụ - mảng trả về trống. – SoulieBaby

+0

Bước qua mã, bắt đầu từ JHtmlBootstrap :: tooltip() trong đó đoạn mã JS được tạo, bạn sẽ thấy đoạn mã được đặt thành $ doc -> _ script. Tại sao bạn nhận được một mảng trống là vượt ra ngoài tôi vào lúc này, nhưng bạn đang nhìn vào đúng nơi. – Michael

+0

Tôi đã tìm thấy nơi nó thêm mã, nhưng tôi không muốn hack lõi để xóa nó. Tôi cũng đã thử lặp lại mảng $ doc -> _ trong phần đầu trang và chân trang của tệp chỉ mục mẫu, nhưng vẫn không nhận được gì. – SoulieBaby

2

tôi quản lý để thoát khỏi javascript nhúng sử dụng mã này trong file index.php mẫu của tôi:

unset($this->_script['text/javascript']); 

từ chối trách nhiệm: Tôi không phải là một nhà phát triển PHP, vì vậy sử dụng mã ở trên nguy cơ của riêng bạn :)

1

Tôi đã gặp vấn đề này, tôi đang sử dụng Joomla 3. Nếu đó là trường hợp của bạn thì bạn có thể giải quyết bằng cách thực hiện: Joomla 3 đi kèm với jQuery trên bo mạch, do đó, bằng cách thêm Joomla chính bạn, điều này có thể tạo ra vấn đề. Ngoài ra hãy đảm bảo bạn bao gồm jQuery của mình trên <jdoc:include type="head" />. Nếu bạn cần bao gồm nó. Nhưng tôi không đề nghị điều này. Hope this helps

2

Dựa trên Joomla documents, 2 điều cần xem xét:

a) Trong đoạn mã dưới đây, bạn đang thực sự tạo điều kiện/bao gồm bootstrap và jquery:

# unset frameworks 
JHtml::_('bootstrap.framework',false);// including bootstrap! 
JHtml::_('jquery.framework',false);// including jquery! 

Khi bootstrap được kích hoạt , joomla tự động kích hoạt jquery, và nếu joomla cho phép jquery, joomla tự động kích hoạt chú giải công cụ.

Chỉ cần không gọi những chức năng này. Các unset bạn sử dụng sẽ loại bỏ bootstrap và jquery một cách chính xác:

unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); 

b) nếu kịch bản tooltip vẫn bao gồm, nó có thể chèn vào bởi JHtml::_('behavior.tooltip'); đâu đó trong thành phần được sử dụng.

Cuối cùng, không bao giờ bao giờ sửa đổi các tệp lõi Joomla. đó là một thực hành tồi tệ nhất.

PS. Đối với những người đã đề cập rằng tập lệnh chú giải công cụ được chèn nhưng họ không tìm thấy nó trong $doc, đó là vì $doc không chứa tập lệnh nội tuyến.

3

Ở cuối trang web root.php của bạn (không phải mẫu, http://domain.com/index.php) thay thế $ app-> execute(); phù hợp với những điều sau đây:

// Start the output buffer. 
ob_start(); 

// Execute the application. 
$app->execute(); 

// Get buffer 
$buffer = ob_get_clean(); 

// Change HTML 
$buffer = str_replace('<script type="text/javascript">'.chr(10).'jQuery(document).ready(function(){'.chr(10).' jQuery(\'.hasTooltip\').tooltip({"html": true,"container": "body"});'.chr(10).'});'.chr(10).' </script>','',$buffer); 

// Output buffer 
echo($buffer); 

Lưu ý rằng bạn sẽ cần phải sử dụng CHÍNH XÁC HTML đang được tạo ra bởi các mô-đun. Đây là những gì mô-đun của tôi đang tạo, bạn có thể hơi khác.

Ngoài làm HTML ghi đè như thế này, bạn cũng có thể gọn gàng đầu ra, loại bỏ các liên kết đến các module vv

tôi cũng sử dụng này để làm những việc như thay đổi năm bản quyền trên trang web. Ở vị trí mô-đun, tôi tham chiếu năm hiện tại là "{year}" và sau đó tôi thêm một str_replace khác thực hiện như sau:

$buffer = str_replace('{year}',date('Y'),$buffer); 

Bingo, luôn hiển thị năm hiện tại.

Thưởng thức ...

1

Tôi gặp vấn đề tương tự khi tôi xây dựng mẫu/trang Joomla chỉ với HTML5, CSS3 và một số plugin jQuery nhỏ cho hiệu ứng. Đó là không xứng đáng bao gồm Bootstrap nặng chỉ để hiển thị một số tooltips mà tôi cũng không sử dụng ở tất cả.

mặc dù tôi đã unset media/Jui/js/bootstrap.min.js từ JDocument nhưng những dòng mã

jQuery(document).ready(function(){ 
    jQuery('.hasTooltip').tooltip({"html": true,"container": "body"}); 
}); 

vẫn nối bởi các thư viện/cms/html/bootstrap.php. Vì vậy, tôi đã nhận được lỗi "tooltip chức năng không tìm thấy".

Tôi đã giải quyết điều đó bằng cách thêm một hàm trống vào tệp JS của mẫu của tôi.

jQuery.fn.tooltip = function (option) { }; 
0

Có một Plugin Joomla có sẵn mà unsets Bootstrap và cũng loại bỏ chức năng tooltip đoạn mà là chèn vào bởi JHtml::_('behavior.tooltip'); đâu đó trong bất kỳ thành phần.

See here: Disable Bootstrap Plugin

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