การเพิ่มไฟล์จาวาสคริปต์ในส่วนท้ายและสไตล์ที่กำหนดเอง


9

สำหรับการโหลดหน้าเว็บอย่างรวดเร็วฉันต้องแทรก JS ที่ส่วนท้ายของหน้าจากส่วนประกอบและโมดูล

วิธีการประกาศสคริปต์ต่อไปนี้ไม่สามารถใช้งานได้ที่ด้านล่างเนื่องจากไม่มีพารามิเตอร์ที่จะใส่ไว้ในส่วนท้าย

$rsws_document  = JFactory::getDocument(); 
$rsws_document->addScript();

ดังนั้นวิธีรัดกุมเพื่อบรรลุวัตถุประสงค์ของฉันคืออะไร หาก joomla ไม่ได้มีฟังก์ชั่นการใช้งานเช่นนั้นถือว่าเป็นข้อเสียเปรียบที่สำคัญสำหรับความเร็วในการโหลดหน้าเว็บ

ฉันยังต้องการเพิ่ม stylsheets ที่กำหนดเองจากโมดูลเพื่อให้พวกเขาถูกฉีดไปยังหน้าเพียงครั้งเดียวแม้ว่าโมดูลเดียวกันจะเพิ่มมันหลายครั้งในหน้านั้น -

<style type="text/css"> .classname { color:red; }.....</style>

ฉันจะบรรลุสิ่งนี้ได้อย่างไร


1
คุณควรเก็บคำถามไว้ในหัวข้อเดียว คุณมีสองคำถามที่นี่
Bakual

1
มีส่วนขยายที่อาจช่วยได้: Extensions.joomla.org/extension/scriptsdown
noiragneau

คำตอบ:


6

JDocument-> addScript () มีตัวเลือกเพื่อเลื่อนการโหลดสคริปต์และ / หรือโหลด async ดูเอกสาร API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

วิธีนี้จะทำให้เบราว์เซอร์สามารถโหลดสคริปต์ในภายหลังได้ในกระบวนการซึ่งจะช่วยในเรื่องเวลาในการโหลดหน้าเว็บ

ไม่มี API ที่จะโหลดสคริปต์ที่ด้านล่างของหน้า หากคุณต้องการคุณต้องใช้ส่วนขยายของบุคคลที่สามหรือเพิ่มลงในเทมเพลตโดยตรง


ใช่ฉันทราบแล้ว แต่ wordpress มีคุณสมบัติประเภทนี้ที่เกี่ยวข้องกับคำถามของฉันในกรณีของสคริปต์และ css.so ที่กำหนดเองดังนั้น Joomla ควรเพิ่ม
dev-m

มีการพูดคุยเพื่อเพิ่มบางสิ่งเช่นนั้น โดยส่วนตัวฉันไม่เห็นประโยชน์ของการเพิ่มไว้ที่ด้านล่างผ่านการเลื่อน / async
Bakual

2

ถึงตอนนี้ฉันคิดว่าไม่มีตัวเลือกในการโหลดสคริปต์ที่ด้านล่างของหน้า

สำหรับคำถามที่สองของคุณคุณสามารถใช้คุณสมบัติบูลีนสแตติกและตั้งเป็นจริงในครั้งแรกที่ css ของคุณแสดงผล สำหรับอินสแตนซ์โมดูลต่อไปนี้เพียงทดสอบคุณสมบัตินี้เพื่อตัดสินใจว่าคุณต้องการเพิ่ม css ของคุณหรือไม่

อาจเป็นสถานที่ที่ดีในการเพิ่มคุณสมบัติสแตติกนี้เป็นคลาสตัวช่วยโมดูล

ความนับถือ,


2

$ document-> addScript () เพิ่มสคริปต์ในส่วนหัวเสมอหน้าแท็ก ดังนั้นหากคุณต้องการโหลดไฟล์สคริปต์ที่ด้านล่างของหน้าคุณจะต้องรวม js ในไฟล์นั้นโดยเพียงแค่ใช้<script src="{pathtojacvascriptfile}"></script>

ฉันหวังว่านี่จะช่วยได้


2

ไม่มีวิธีเพิ่มสคริปต์ในส่วนท้ายตอนนี้ อย่างไรก็ตามคุณสามารถสร้างปลั๊กอินที่ได้รับผลลัพธ์ค้นหาแท็กที่มีชื่ออย่างเหมาะสมเช่นส่วนท้ายและใช้ str_replace เพื่อเพิ่มรหัสของคุณ

แต่คุณสามารถใช้ส่วนขยายเหล่านี้ได้:

  1. ScriptsDown
  2. JCH เพิ่มประสิทธิภาพ

ฉันก็พบวิธีหนึ่ง ฉันไม่ต้องการแฮ็ครหัสหลัก แต่นั่นเป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้ในตอนนี้

โปรดตรวจสอบลิงค์นี้ - ไฟล์ Javascript มีส่วนท้าย

ฉันหวังว่ามันจะช่วยให้ผู้อื่น :)


2

เราใช้โมดูลที่ชื่อว่า "Blank Module" ซึ่งอนุญาตให้ใส่สคริปต์ใดก็ได้ (PHP, Java, CSS, HTML, อะไรก็ตาม) และเลือกตำแหน่งที่จะโหลด (หัว, ร่างกาย, ส่วนท้ายของร่างกาย ฯลฯ )

ได้ฟรีและฉันพบว่ามันมีประโยชน์โดยสิ้นเชิง: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

หากต้องการย้ายสคริปต์จากด้านล่างไปยังส่วนอื่นจะเป็นการทำงานมากกว่าเดิม ใช้สิ่งนี้:

รวมไว้ในเทมเพลต:

<php?
$ head = $ doc-> getHeadData ();
// ลบสคริปต์
unset ($ doc -> _ สคริปต์ [JURI :: root (จริง). '/media/system/js/mootools-more.js'];
?>

เพิ่มหนึ่งบรรทัด "unset" สำหรับแต่ละสคริปต์ที่คุณต้องการลบออกจากส่วนหัว จากนั้นเพิ่มลงในโมดูลเปล่าโหลดที่ด้านล่าง (ตำแหน่งดีบัก?) หนึ่งบวกถ้าคุณสร้างโมดูลว่างที่แตกต่างกันคือคุณสามารถโหลดสคริปต์เฉพาะเมื่อจำเป็น (เช่นอินสแตนซ์โมดูลสำหรับโมโตรเท่านั้นโหลดได้เฉพาะในหน้าเว็บที่ระบุ)

สำหรับสไตล์คุณสามารถใช้โมดูลว่างได้

ฉันหวังว่านี่จะช่วยได้.


0

ฉันยังไม่ได้ลองด้วยตัวเอง คุณสามารถสร้างโมดูลที่ไม่แสดง HTML เพียงพิมพ์สคริปต์และสไตล์ แต่จะอยู่ในตำแหน่งโมดูลด้านล่างในหน้าที่แสดงโมดูลอื่นของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.