Joomla

ถามตอบเกี่ยวกับ Joomla! ผู้ดูแลระบบผู้ใช้นักพัฒนาและนักออกแบบ

2
JHtml: script () และ $ doc-> addScript ต่างกันอย่างไร
ฉันพัฒนาโมดูลเมื่อเร็ว ๆ นี้ที่ต้องการไฟล์ JS และ CSS บางไฟล์เพื่อแทรกเข้าไปใน<head>แต่ละหน้า ตอนแรกฉันใช้: $doc =& JFactory::getDocument(); $doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js'); อย่างไรก็ตามฉันสังเกตเห็นว่าเมื่อเปิดใช้งานการแคชเว็บไซต์โหลดทั้งรุ่นแคชจาก/cacheและรุ่นที่ไม่ใช่แคช/modules/mod_x/js/ทำให้เกิดข้อผิดพลาด JS เมื่อฉันเปลี่ยนสิ่งนี้เป็น: JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js'); สคริปต์ถูกโหลดเพียงครั้งเดียวจากแคชเพื่อแก้ไขข้อผิดพลาดเหล่านี้ ฉันอ่านในเอกสารว่าaddScriptวิธีการดังกล่าวเป็น 'ระดับต่ำ' มากกว่าJHtml:scriptวิธีการ แต่นอกเหนือจากที่บอกว่า ... แน่นอนคุณจะต้องใช้รหัสบางขั้นตอน [ที่ JHtml: สคริปต์ทำเพื่อคุณ] ด้วยตนเองซึ่งจะทำโดยอัตโนมัติโดยใช้ [JHtml: วิธีสคริปต์] ด้านบน [ถ้าคุณใช้ addScript] ... ไม่มีรายละเอียดเพิ่มเติม ดังนั้นความแตกต่างคืออะไร? JHtml:scriptในที่สุดฉันคิดว่าจะเรียกaddScriptวัตถุเอกสารในบางจุด แต่ขั้นตอนตัวกลางอื่น ๆ ดำเนินการก่อนหรือไม่

3
ห้ามการเข้าถึงไฟล์ INI และ XML โดยตรง
เจ้าของเว็บไซต์บางคนไม่ต้องการให้ผู้คนโดยเฉพาะคู่แข่งรู้ว่าคุณลักษณะใดที่พวกเขามีในเว็บไซต์ เพราะข้อมูลสำคัญบางอย่างในภาษาหรือไฟล์การกำหนดค่าสามารถเข้าถึงได้โดยตรงจากเบราว์เซอร์เช่น administrator/components/com_bank/language/en-GB/en-GB.com_bank.ini administrator/components/com_bank/config.xml components/com_bank/models/forms/transaction.xml แม้ว่าจะมีเพียงช่างเทคนิคเท่านั้นที่รู้เกี่ยวกับ Joomla เท่านั้นที่สามารถค้นหาลิงก์เหล่านี้เข้าถึงและค้นหา (หรือคาดเดา) ว่ามีไซต์ใดบ้าง แต่เจ้าของเว็บไซต์ต้องการให้ทุกอย่างเป็นความลับ ดังนั้นมีวิธีแก้ไขปัญหาด้านเซิร์ฟเวอร์หรือส่วนขยาย Joomla ใด ๆ เพื่อห้ามการเข้าถึงโดยตรงไปยังไฟล์ INI และ XML เหล่านี้หรือไม่
10 cms  security 

9
วิธีการสร้างหน้าเฉพาะกับโมดูลและไม่มีองค์ประกอบ?
ใน joomla ฉันต้องเชื่อมโยงทุกหน้ากับมุมมององค์ประกอบ ฉันจะสร้างเพจที่ไม่มีเอาต์พุตคอมโพเนนต์ได้อย่างไร ตัวอย่าง: ในหน้าแรกของฉันฉันแค่ต้องการเอาท์พุทโมดูล สำหรับสิ่งนี้ฉันสามารถเชื่อมโยงโฮมเพจกับ "บทความที่ว่างเปล่า" แต่มีวิธีที่ดีกว่าในการทำเช่นนี้โดยไม่ใช้ส่วนขยายของบุคคลที่สามหรือไม่

5
ฉันจะกำหนดเว็บไซต์ Joomla รุ่นที่ฉันไม่มีสิทธิ์ในการจัดการได้อย่างไร
ฉันกำลังสร้างเครื่องมือตรวจสอบบัญชีโดยใช้ PHP ซึ่งฉันสามารถส่ง URL ของเว็บไซต์ Joomla และเรียกใช้การตรวจสอบจำนวนมากบนเว็บไซต์เป้าหมายรวมถึงการกำหนดหมายเลขรุ่น Joomla ที่ติดตั้งไว้ ฉันไม่มีสิทธิ์ของผู้ดูแลระบบบนเว็บไซต์ Joomla เป้าหมายหรือเซิร์ฟเวอร์ที่ตั้งอยู่ ทุกคนสามารถบอกได้ว่าไฟล์และเนื้อหาไฟล์ใดที่ฉันต้องตรวจสอบเพื่อให้สามารถทำนายรุ่น Joomla ที่ติดตั้งได้อย่างมั่นใจโดยไม่ต้องมีสิทธิ์ดูแลระบบบนเว็บไซต์ Joomla เป้าหมาย ฉันสนใจไม่เพียง แต่รู้ว่าเว็บไซต์เป็น Joomla 2.5 (ตัวอย่าง) แต่ยังรวมถึงว่าเป็น Joomla 2.5.18 หรือ 2.5.19 เป็นต้นดังนั้นฉันจึงรู้ว่ามันได้รับการดูแลอย่างดีหรือไม่
10 cms 

4
จะอัปเดตการแทนที่อย่างไร
อย่างที่ทราบกันดีว่ามันเป็นไปได้ที่จะแทนที่เทมเพลต, มุมมอง, โมดูล, ส่วนประกอบ ปัญหาหลักคือเมื่อ Joomla! มีการอัปเดตและรายการที่อยู่เหนือกว่า (ในโฟลเดอร์แม่แบบ) จะล้าสมัย ฉันจะติดตามการอัปเดตทุกครั้งที่อัปเดตเป็น Joomla ได้อย่างไร ฉันต้องทำด้วยตัวเองและตรวจสอบการอัพเดทใหม่แต่ละครั้งหรือมีวิธีอื่นในการทำเช่นนี้หรือไม่?
10 overrides  update 

1
ช่องแบบฟอร์ม“ showon” ที่มีหลายช่อง
ฉันมี 3 ฟิลด์ที่กำหนดในไฟล์ XML ของฉันดังนี้: <field name="field1" type="radio" label="Field 1" class="btn-group" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="field2" type="radio" label="Field 2" class="btn-group" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="field3" type="radio" label="Field 3" class="btn-group" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> ตอนนี้สิ่งที่ฉันต้องการจะทำก็ต่อfield3 เมื่อ แสดงfield1 และ field2ตั้งค่าเป็น1เท่านั้น

4
วิธีการรับค่าจากแบบฟอร์มย่อย
ฉันต้องการฝังสไลด์โชว์ที่เรียบง่ายให้กับเทมเพลตของฉันและฉันต้องการใช้ฟอร์มย่อยเพื่อทำให้การเปลี่ยนภาพง่ายขึ้น นี่คือรหัสที่ฉันใช้เรียกไฟล์ child xml <field name="slideshow_items" type="subform" formsource="templates/jomlamaster/admin/subform/slideshow.xml" min="1" max="4" multiple="true" layout="joomla.form.field.subform.repeatable-table" groupByFieldset="true" label="Subform Field" description="Subform Field Description" /> และนี่คือเนื้อหาของ slideshow.xml: <?xml version="1.0" encoding="UTF-8"?> <form> <fieldset name="fieldset" label="Slideshow"> <field name="slideshow_img" type="media" directory="" label="Slideshow item" description="Choose an image slideshow"/> <field name="slideshow_title" type="text" class="inputbox" label="Slideshow text" size="40" /> </fieldset> </form> นี่คือสิ่งที่ฉันได้รับเมื่อ print_r …

2
การเปลี่ยนแปลงของรหัสใดบ้างที่จำเป็นเพื่อทำให้ Joomla 3.5 Extensions PHP7 สามารถทำงานร่วมกันได้?
(โปรดอดทนกับฉันฉันขอโทษ แต่ฉันก็ไม่สามารถถามได้อย่างรวดเร็ว) เราทุกคนแทบจะรอ Joomla 3.5.0 รุ่นที่เสถียรใช่มั้ย RC3 RC4 เปิดตัวในวันนี้และเป็นเพียงไม่กี่วันจนกว่าเธอจะได้รับการปล่อยตัวในที่สุด ( Joomla 3.5.0 Stable เพิ่งเปิดตัวในวันจันทร์ที่ 21 มีนาคม 2016 ) หลังจากใช้เวลานานกว่าหนึ่งปีในการสร้างและการเปลี่ยนแปลงเป้าหมายจำนวนมาก คุณสมบัติที่ใหญ่ที่สุดในบรรดาการปรับปรุงที่เห็นได้ชัดเจนอื่น ๆนั้นแน่นอนว่าจะเป็นความสามารถในการทำงานบน PHP7 ใหม่ล่าสุดทำให้การดำเนินการเร็วขึ้นเกือบ 50% และการใช้หน่วยความจำลดลงเกือบ 4 เท่า ( แหล่งที่มา ) เนื่องจากการเปลี่ยนแปลงภายในของ PHP7 (การแนะนำของคำใบ้ประเภทและคำที่สงวนไว้ตอนนี้ "int", "สตริง" และ "ลอย") มันจะส่งผลให้เกิดการหยุดการทำงานร่วมกันของ Backwards สำหรับส่วนขยายมากมายแม้ว่า Joomla 3.5.0 เข้ากันได้อย่างสมบูรณ์กับ PHP7 (ที่มา: ตัวแบ่งความเข้ากันได้ย้อนหลังจากข่าวประชาสัมพันธ์ RC4 :) เรามีสัญญาด้านความเข้ากันได้แบบย้อนหลังเพื่อให้แน่ใจว่ารหัสจะไม่หยุดกะทันหัน อย่างไรก็ตามมีสถานการณ์ที่ทำให้เราไม่สามารถรักษาสัญญานี้ได้อีกต่อไป …

2
วิธีสร้างตัวกรองสำหรับ Jinput
ฉันผ่านJInput Documentationแล้ว เราสามารถเข้าถึงวัตถุ JInput ดังนี้: JFactory::getApplication()->input; ถ้าเราดึงค่ามากขึ้นมันจะมีประโยชน์ในการเก็บวัตถุ JInput ในตัวแปรดังนั้นเราไม่จำเป็นต้องเรียกJFactory::getApplication()ทุกครั้งที่เราทำเช่นนั้น: $jinput = JFactory::getApplication()->input; ในการดึงค่าจาก JInput เราจำเป็นต้องใช้วิธีการรับ: $data = $jinput->get('varname', 'default_value', 'filter'); อย่างที่คุณเห็นมันมี 3 พารามิเตอร์: ชื่อตัวแปร ค่าเริ่มต้น (ค่าเริ่มต้นเป็นโมฆะ) ชื่อตัวกรอง (ค่าเริ่มต้นถึง cmd) และนี่คือคำถามของฉันเกี่ยวกับพารามิเตอร์ที่ 3 ฉันจะสร้างตัวกรองของฉันเองได้Jinputอย่างไร ตัวอย่างเช่นหากฉันต้องตรวจสอบหมายเลขโทรศัพท์หรือที่อยู่ IP ฉันจะสร้างตัวกรองของฉันเองได้อย่างไร

1
Joomla Session-> isActive () และการหมดเวลาเซสชันเปลี่ยนเส้นทางไม่ทำงาน
ฉันกำลังพยายามเปลี่ยนเส้นทางเว็บไซต์ของฉันไปที่หน้าแรกเมื่อเซสชันหมดอายุและผู้ใช้ออกจากระบบโดยอัตโนมัติ (ตอนนี้จะถูกเปลี่ยนเส้นทางไปยังหน้าการลงทะเบียนหลัก joomla ซึ่งฉันไม่ต้องการให้ผู้ใช้เห็นเพราะฉันสร้างขึ้นเอง หน้าการลงทะเบียนในองค์ประกอบที่กำหนดเอง) ในไฟล์ index.php ของแม่แบบของฉันฉันตรวจสอบว่าเซสชันนั้นทำงานอยู่และทำการเปลี่ยนเส้นทางถ้าเซสชันนั้นหมดอายุ: $session = JFactory::getSession(); if (!$session->isActive()) { echo "session is expired"; header('Location: http://www.example.com/'); exit; }else{ echo "session is active"; } โซลูชันนี้ใช้งานได้ดีจนกระทั่งฉันได้อัปเดตเป็น Joomla 3.4.5 หลังจากการอัพเดตแม้ว่าผู้ใช้จะออกจากระบบโดยอัตโนมัติมันจะทำงานเหมือนกับว่าเซสชันยังคงใช้งานอยู่ (ฉันตรวจสอบว่าผ่านบรรทัด "เซสชันใช้งานอยู่" echo ผ่านตามที่คุณเห็นด้านบน) เหตุใดเซสชันยังคงทำงานแม้ว่าผู้ใช้จะออกจากระบบแล้ว มีทางเลือกอื่นสำหรับวิธี $ session-> isActive () หรือไม่?

2
Joomla / PHP จะเพิ่ม <meta property> แทนที่จะเป็น <meta name> แท็กในส่วนหัวได้อย่างไร?
เรียนชุมชน Joomla ฉันกำลังทำงานกับปลั๊กอินระบบเล็กน้อยเพื่อฉีดคุณสมบัติ Facebook Open Graph ลงในบทความ $document-&gt;setMetaData()ดังนั้นผมจึงได้ใช้ แต่ตอนนี้ฉันค้นพบว่านี่เป็นการเพิ่ม&lt;meta name=""&gt;แท็กในส่วนหัวของหน้า แต่ Facebook คาดหวัง&lt;meta property=""&gt;แท็ก วิธีที่ง่ายที่สุดในการใส่&lt;meta property=""&gt;แท็กในส่วนหัวของหน้าคืออะไร โปรดอธิบายรายละเอียดให้มากที่สุดเท่าที่จะเป็นไปได้เพราะฉันยังใหม่กับการพัฒนาปลั๊กอินของ Joomla คำแนะนำใด ๆ ที่ชื่นชมขอบคุณ

1
วิธีการตั้งค่าพารามิเตอร์ขององค์ประกอบแบบไดนามิก?
หากต้องการกู้คืนพารามิเตอร์ที่ฉันใช้: $myparam = JComponentHelper::getParams('com_mycomponent')-&gt;get('myparam'); แต่วิธีการที่ถูกต้องในการจัดเก็บพารามิเตอร์ของส่วนประกอบคืออะไร?

3
วิธีการเพิ่มเมนูผู้ดูแลระบบแยกต่างหากสำหรับองค์ประกอบที่กำหนดเอง
โดยค่าเริ่มต้นองค์ประกอบที่กำหนดเองสามารถเห็นได้ภายใต้เมนู 'ส่วนขยาย' ที่ด้านผู้ดูแลระบบ แต่ฉันจะสร้างเมนูของตัวเองที่ด้านบนใกล้กับเมนู 'ส่วนขยาย' เช่น 'ส่วนประกอบของฉัน' และแสดงลิงค์เมนูย่อยภายใต้นั้นได้อย่างไร

3
การติดตั้ง Joomla - การลบโฟลเดอร์การติดตั้ง
ตั้งแต่ฉันเริ่มใช้ Joomla (ในช่วงกลาง 1.5 วัน) installationไดเรกทอรีจะต้องถูกลบเมื่อติดตั้ง Joomla สำเร็จแล้ว แต่คำถามของฉันคือทำไมเราต้องคลิกปุ่มเพื่อลบมัน มีเหตุผลที่สิ่งนี้ไม่ได้ทำโดยอัตโนมัติหรือไม่?

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

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