การสร้างวิดเจ็ตสำหรับเดสก์ท็อป การเขียน Windows Sidebar Gadget จาก Scratch Create Widgets
วันนี้เราจะมาดูวิธีสร้างวิดเจ็ต (Widget) ของคุณเองบนอุปกรณ์ Android วิดเจ็ตเป็นองค์ประกอบที่คุ้นเคยของเดสก์ท็อป ซึ่งคุณสามารถเข้าถึงฟังก์ชันบางอย่างของแอปพลิเคชันได้: ดูข่าวในหน้าต่างวิดเจ็ต พยากรณ์อากาศ อัปเดตข่าวสารเกี่ยวกับบริการต่างๆ จัดการฟังก์ชันต่างๆ ของอุปกรณ์ (ล็อกหน้าจอ เปิดวิทยุ อินเทอร์เน็ต และอื่นๆ อีกมากมาย) ครั้งนี้เราจะไม่สร้างสิ่งที่ยิ่งใหญ่และมีประโยชน์มากเหมือนไฟฉาย :) แต่เราจะสร้างวิดเจ็ตง่ายๆ ที่จะใช้เป็นปุ่ม เมื่อคุณคลิกโดยใช้เบราว์เซอร์มาตรฐาน เราจะไปที่รายการโปรดของทุกคน ไซต์ แน่นอนคุณสามารถปรับแต่งไซต์ใดก็ได้ที่คุณต้องการ
เราสร้างโครงการใหม่ เลือก Blank Activity ซึ่งเป็นเวอร์ชันขั้นต่ำของ Android 2.2+ เมื่อสร้างวิดเจ็ต สิ่งแรกที่ต้องทำคือสร้างวัตถุ AppWidgetProviderInfoซึ่งเราระบุไฟล์ xml ที่จะเติมเต็มมุมมองของวิดเจ็ตเอง ในการทำเช่นนี้ ให้สร้างโฟลเดอร์ในโครงการ ความละเอียด/xmlและในนั้นเราสร้างไฟล์ xml ใหม่ชื่อ widget.xmlโดยมีเนื้อหาดังนี้
xml version= "1.0" encoding= "utf-8" ? > < appwidget- provider xmlns: android= android: minWidth= "146dp" android: updatePeriodMillis= "0" android: minHeight= "146dp" android: initialLayout= "@layout/activity_main" > < / appwidget- provider>ตอนนี้ไปที่ไฟล์ activity_main.xmlและสร้างอินเทอร์เฟซของวิดเจ็ตของเรา โดยจะประกอบด้วยปุ่ม ปุ่ม:
< LinearLayout xmlns: android= "http://schemas.android.com/apk/res/android" xmlns:เครื่องมือ= "http://schemas.android.com/tools" android: layout_width= "match_parent" android: layout_height= "match_parent" android:gravity= "top" tools: context= ".MainActivity">< Button android: id= "@+id/button" android: layout_width= "wrap_content" android: layout_height= "wrap_content" android: layout_marginLeft= "5dp" android: text= "@string/app_name" / > < / LinearLayout >อย่างที่คุณเห็น เราได้สร้างปุ่มปกติ ดังนั้นมันจึงเป็นวิดเจ็ตของเรา:
นั่นคือคุณสามารถทำอะไรก็ได้ที่คุณต้องการแทนปุ่มนี้
เรามาเริ่มทำงานกับโค้ดในไฟล์กัน MainActivity.java. จะต้องสืบทอดมาจากคลาส AppWidgetProviderซึ่งมีวิธีการหลักอยู่ เมื่ออัปเดต (). ในวิธีนี้ เราจำเป็นต้องกำหนดสองวัตถุ: ความตั้งใจที่รอดำเนินการและ มุมมองระยะไกล. เมื่อสิ้นสุดการใช้งานคุณต้องเรียกเมธอด อัพเดทAppWidget(). รหัสไฟล์ MainActivity.java:
นำเข้า android.net.Uri ; นำเข้า android.app.PendingIntent ; นำเข้า android.appwidget.AppWidgetManager; นำเข้า android.appwidget.AppWidgetProvider; นำเข้า android.content.Context ; นำเข้า android.content.Intent ; นำเข้า android.widget.RemoteViews ; นำเข้า android.widget.Toast ; นำเข้า com.example.widget.R ; MainActivity คลาสสาธารณะขยาย AppWidgetProvider( @Override public void onUpdate (บริบทบริบท AppWidgetManager appWidgetManager , int appWidgetIds ) ( สำหรับ (int i= 0 ; i< appWidgetIds. length; i++ ){ int currentWidgetId = appWidgetIds[i]; // สร้างคำขอ http อย่างง่ายไปยังลิงก์ที่ระบุและติดตาม:สตริง url = "http://ไซต์" ; เจตนาเจตนา = เจตนาใหม่(เจตนา . ACTION_VIEW); เจตนา. addFlags (เจตนา . FLAG_ACTIVITY_NEW_TASK); เจตนา. setData(Uri .parse(url)); // กำหนดวัตถุคลาสที่จำเป็นสองรายการ PendingIntent และ RemoteViews: PendingIntent ที่รอดำเนินการ = PendingIntent getActivity(บริบท 0 เจตนา 0 ); มุมมอง RemoteViews = RemoteViews ใหม่ (context.getPackageName (), R.layout.activity_main); //ตั้งค่าการประมวลผลคลิกเพื่อเพิ่มวิดเจ็ต:มุมมอง setOnClickPendingIntent(ปุ่ม R id. ค้างอยู่); appWidgetManager updateAppWidget(currentWidgetId,มุมมอง); ขนมปังปิ้ง. makeText(บริบท "เพิ่มวิดเจ็ต", ขนมปังปิ้ง . LENGTH_SHORT). แสดง(); ) ) ))เพื่อให้วิดเจ็ตของเราทำงานได้สำเร็จ เราต้องการเวทมนตร์ในไฟล์รายการ AndroidManifest.xml. ควรมีลักษณะดังนี้:
xml version= "1.0" encoding= "utf-8" ? > < manifest xmlns: android= "http://schemas.android.com/apk/res/android" package="com.example.widget" android:versionCode="1" android:versionName="1.0">< uses- permission android: name= "android.permission.INTERNET" / > < application android: allowBackup= "true" android: icon= "@drawable/ic_launcher" android: label= "@string/app_name" android: theme= "@style/AppTheme" > < receiver android: name= "home.study.MainActivity" > < intent- filter> < action android: name= "android.appwidget.action.APPWIDGET_UPDATE" / > < / intent- filter> < meta- data android: name= "android.appwidget.provider" android: resource= "@xml/widget" / > < / receiver> < / application> < / manifest>ตามที่คุณคาดเดา วิดเจ็ตถูกกำหนดไว้ในแท็ก<เครื่องรับ> .
สิ่งเดียวที่ต้องแก้ไขคือแก้ไขไฟล์ strings.xmlเพิ่มบรรทัดที่เราใช้:
< ? xml version= "1.0" encoding= "utf-8" ? > < resources> < string name= "app_name" >เรียนรู้. แอนดรอยด์ string> < string name= "action_settings" >การตั้งค่า string> < string name= "hello_world" >สวัสดีชาวโลก!< / string> < / resources>ความสนใจ! Android Studio อาจดุคุณเมื่อคุณเริ่มโปรแกรม ฉันต้องการให้คุณระบุกิจกรรมเริ่มต้น เลือกบรรทัด "อย่าเปิดกิจกรรม" (อย่าเปิดกิจกรรม):
ตอนนี้ติดตั้งแอปพลิเคชันบนอีมูเลเตอร์หรืออุปกรณ์ เพิ่มวิดเจ็ตบนเดสก์ท็อป:
และคลิกที่มัน:
อย่างที่คุณเห็น ทุกอย่างทำงานได้ดี
ดังนั้น ในบทช่วยสอนนี้ เราสร้างวิดเจ็ต Android อย่างง่ายซึ่งประกอบด้วยปุ่ม Button เมื่อเราคลิกที่วิดเจ็ต เราจะสร้างคำขอ http ง่ายๆ และตามลิงก์ URL ที่กำหนด คุณสามารถฝึกฝนกับองค์ประกอบอื่นๆ ที่ไม่ใช่ปุ่ม และสร้างฟังก์ชันที่น่าสนใจสำหรับองค์ประกอบเหล่านั้น ขอให้โชคดี!
เพื่อที่จะ สร้างวิดเจ็ตใน Androidคุณไม่จำเป็นต้องรู้วิธีการตั้งโปรแกรมด้วยซ้ำ มีแอปสำหรับนักออกแบบหลายแอปที่ทำให้การวาดวิดเจ็ตเป็นเรื่องง่ายและให้ฟังก์ชันที่คุณต้องการ
ข้อความขั้นต่ำ
แอปพลิเคชั่นนี้ให้คุณสร้างวิดเจ็ตที่เรียบง่ายซึ่งประกอบด้วยข้อความและตัวเลข แม้จะมีชื่อ แต่วิดเจ็ตเหล่านี้มีความเป็นไปได้ที่กว้างมาก
เมื่อติดตั้งแล้ว ให้เพิ่มวิดเจ็ต Minimalistic Text ลงในเดสก์ท็อปในขนาดที่คุณต้องการ หน้าต่างการตั้งค่าวิดเจ็ตจะเปิดขึ้น
ในการตั้งค่า คุณสามารถเลือกพื้นหลัง การวางแนว แบบอักษร การคลิก เป็นต้น นอกจากนี้ในการตั้งค่ายังมีเลย์เอาต์ที่กำหนดไว้ล่วงหน้าสำหรับการเติม:
- เวลา.
- วันที่.
- ระดับการชาร์จ
- อุณหภูมิ.
คุณสมบัติเพิ่มเติมสำหรับการกรอกวิดเจ็ตมีให้เมื่อสร้างเลย์เอาต์วิดเจ็ตของคุณเอง:
- ข้อความ.
- พื้นที่ว่าง/ใช้บนการ์ด SD
- เวลาทำงานของระบบ
- จำนวนข้อมูลที่ถ่ายโอนผ่านเครือข่ายมือถือและไม่เพียงเท่านั้น
- ชื่อของเครือข่าย Wi-Fi, ที่อยู่ IP ในเครือข่าย Wi-Fi
- จำนวน RAM ที่ถูกครอบครอง
ค่าทั้งหมดสามารถแสดงเป็นข้อความและตัวเลข
วิดเจ็ตที่กำหนดเองขั้นสูงสุด (UCCW)
แอปพลิเคชั่นนี้ช่วยให้คุณสร้างวิดเจ็ตไม่เพียง แต่จากข้อความเท่านั้น แต่ยังรวมถึงเนื้อหากราฟิกด้วย
เมื่อเปิดใช้งาน หน้าต่างสร้างวิดเจ็ตจะเปิดขึ้น หากต้องการเพิ่มวัตถุในวิดเจ็ต ให้กดปุ่ม +/- ที่ด้านบน หากต้องการย้ายและแก้ไขด้วยวิธีใดก็ตาม ให้คลิกที่ปุ่ม "เลือกวัตถุ" ที่ด้านบนแล้วเลือกวัตถุที่เพิ่มเข้าไป
วิดเจ็ตสามารถมีวัตถุต่อไปนี้:
- เวลา วันที่ และวันในสัปดาห์
- นาฬิกาอะนาล็อก.
- ข้อความที่กำหนดเอง
- ระดับการชาร์จเป็นตัวเลขหรือการแสดงกราฟิกของมัน
- ข้อมูลสภาพอากาศทั้งหมด - อุณหภูมิ ความชื้น ความเร็วลม ฯลฯ
- รูปทรงเรขาคณิต
- รูปภาพ
- จำนวนอีเมล SMS และสายที่ไม่ได้รับของ Gmail ที่ยังไม่ได้อ่าน
- เวลาที่นาฬิกาปลุกดังขึ้น
แต่ละองค์ประกอบสามารถหมุน ยืด งอ และเปลี่ยนสีได้ แน่นอน คุณสามารถปรับแต่งการดำเนินการคลิก (เลือกวัตถุ->ฮอตสปอต) รองรับการนำเข้าและส่งออกวิดเจ็ตที่สร้างขึ้น
ระบบปฏิบัติการ Android มีคุณสมบัติและความสามารถมากมาย หนึ่งในนั้นคือวิดเจ็ต - หน้าต่างที่ให้คุณใช้ฟังก์ชันส่วนหนึ่งของแอปพลิเคชันโดยไม่ต้องเปิดใช้งาน
โดยพื้นฐานแล้ว วิดเจ็ตจะมาพร้อมกับแอปพลิเคชัน อย่างไรก็ตาม มีบางโปรแกรมที่ไม่มีตัวเลือกนี้ ดังนั้นคุณต้องจัดการด้วยมือของคุณเอง!
- เมื่อใช้ Play Market เราดาวน์โหลดแอปพลิเคชันฟรี “KWGT Kustom Widget Maker” ซึ่งซื้อได้ฟรี แต่ฟังก์ชันบางอย่างจะใช้งานได้หลังจากซื้อส่วนเสริมเท่านั้น
โปรแกรมทำหน้าที่เป็นแพลตฟอร์มสำหรับเปิดตัววิดเจ็ตของบุคคลที่สามจากผู้พัฒนารายต่างๆ นอกจากนี้ คุณสามารถเปลี่ยนรูปลักษณ์ของวิดเจ็ต เพิ่มฟังก์ชันการทำงานเพิ่มเติมได้
ในตอนแรก คุณอาจคิดว่า “KWGT Kustom Widget Maker” เป็นแอปพลิเคชั่นที่ซับซ้อนซึ่งคล้ายกับโปรแกรมพัฒนาซอฟต์แวร์ ใช่และไม่ใช่: อินเทอร์เฟซคล้ายกัน แต่ไม่มีอะไรซับซ้อนที่นี่
ในการเริ่มแก้ไขวิดเจ็ต:
- ไปที่เดสก์ท็อปและเรียกเมนูแก้ไขเดสก์ท็อปโดยกดปุ่มเมนูค้างไว้หรือแตะบนหน้าจอค้างไว้
- ค้นหากรอบวิดเจ็ต "KWGT" และกำหนดขนาดที่ต้องการ เช่น - 4x2 หลังจากนั้นหน้าต่างจะถูกสร้างขึ้นบนเดสก์ท็อป
- เราคลิกที่หน้าต่างจึงเปิดเมนูการเลือกวิดเจ็ต
- เลือกเลย์เอาต์ที่คุณชอบแล้วคลิก (สามารถดาวน์โหลดเลย์เอาต์เพิ่มเติมได้จาก Play Store โดยระบุ "วิดเจ็ต KWGT" ในแถบค้นหาแอปพลิเคชัน)
- หลังจากเลือกเค้าโครงที่คุณต้องการแล้ว แอปพลิเคชันจะดำเนินการแก้ไขต่อไป การตั้งค่าต่อไปนี้จะใช้งานได้:
- องค์ประกอบที่รับผิดชอบในการตั้งค่าพารามิเตอร์ทางเรขาคณิตของวิดเจ็ต
- พื้นหลัง รับผิดชอบภาพพื้นหลังบนวิดเจ็ต
- แตะ ซึ่งระบุการกระทำที่จะดำเนินการเมื่อเปิดใช้งานวิดเจ็ต
- เลเยอร์ที่รับผิดชอบขนาดของวิดเจ็ต
เป็นผลให้เราได้รับวิดเจ็ตที่ไม่ซ้ำใครพร้อมฟังก์ชันที่จำเป็น
ฉันเพิ่งจำเป็นต้องสร้างโปรแกรมเบ็ดเตล็ดสำหรับ Windows Sidebar ฉันไม่มีทักษะด้านนี้ ดังนั้นหลังจากกูเกิลและอ่านเอกสารประกอบแล้ว ก็เริ่มกันเลย
ฉันจะแสดงให้คุณเห็นว่าฉันลงเอยด้วยอะไร
แกดเจ็ตจะรับข้อมูลจากไซต์ในรูปแบบของ xml แยกวิเคราะห์และแสดงข้อมูลดังกล่าว แกดเจ็ตจะตรวจสอบเวอร์ชันใหม่และหากมีให้ปฏิเสธที่จะทำงาน :)
ในขั้นต้น เพื่อเพิ่มพูนประสบการณ์ ฉันต้องการเขียนแกดเจ็ตทั้งหมดใน VBScript (เนื่องจากฉันยังไม่ได้จัดการกับมัน) แต่สุดท้ายฉันต้องแทรกใน JavaScript
ไปที่รหัสโดยตรง ฉันจะไม่พิจารณาโค้ดทั้งหมดที่นี่ ฉันจะแสดงเฉพาะประเด็นหลักเท่านั้น ลิงก์ไปยังแกดเจ็ตที่เสร็จสมบูรณ์อยู่ที่ส่วนท้ายของบทความ
ไฟล์หลักของโปรแกรมเบ็ดเตล็ดคือไฟล์รายการ Gadget.xml ควรเรียกแบบนั้นและอยู่ในรูทของไฟล์เก็บถาวรของเรา (แกดเจ็ตไม่มีอะไรมากไปกว่าไฟล์เก็บถาวร ZIP ที่มีนามสกุล .gadget)
สภาพอากาศจาก Info.Denms.Ru 1.0.1232 วิดเจ็ตสภาพอากาศแบบเต็ม (Info.Denms.Ru)
ลองพิจารณาในรายละเอียดเพิ่มเติม
องค์ประกอบ
ตัวเลือก
ไฟล์ main.html เป็นไฟล์ html ปกติฉันจะไม่ให้เต็มฉันจะอยู่เฉพาะบางจุด
องค์ประกอบ g:background ระบุพื้นหลังของโปรแกรมเบ็ดเตล็ด ขอให้โปร่งใส
แกดเจ็ตสามารถอยู่ในสองสถานะ - เชื่อมต่อ (ทางด้านซ้ายในภาพหน้าจอด้านบน) และไม่ได้เชื่อมต่อ (ทางด้านขวา) เราจะเก็บสถานะปัจจุบันของโปรแกรมเบ็ดเตล็ดไว้ในตัวแปรที่เชื่อมต่อ JavaScript
เราจะต้องใช้ฟังก์ชัน isDocked wrapper ในอนาคตเพื่อค้นหาสถานะปัจจุบันของโปรแกรมเบ็ดเตล็ดจาก VBScript (เนื่องจากฉันไม่ได้ลอง แต่ฉันไม่สามารถใช้งานใน VBScript บริสุทธิ์ได้) หมายเหตุเพิ่มเติม - สคริปต์ทำงานอย่างถูกต้องตามลำดับนี้ เช่น ก่อนอื่นเราจะอธิบายสคริปต์ VBScript จากนั้นจึงใช้ JavaScript
องค์ประกอบที่เหลือใน main.html แสดงด้วยองค์ประกอบ DIV ในตำแหน่งสัมบูรณ์ ต่อจากนั้น จากสคริปต์ เราจะอ้างถึงพวกเขาด้วย ID ของพวกเขา
ใช้ JavaScript ตั้งค่าสถานะการเทียบท่าและสถานะการปลดการเชื่อมต่อสำหรับแกดเจ็ต ตลอดจนระบุไฟล์การตั้งค่า (main.js)
System.Gadget.onDock = ปรับขนาด; System.Gadget.onUndock = ปรับขนาด; System.Gadget.settingsUI = "settings.html"; System.Gadget.onSettingsClosed = การตั้งค่าปิด; เทียบท่า = 0; // สถานะเริ่มต้นของการปรับขนาดแกดเจ็ต (); //การเริ่มต้น
ดังที่คุณเห็นจากรายการด้านบน เมื่อสถานะของแกดเจ็ตเปลี่ยนไป ฟังก์ชัน resize() จะถูกเรียกใช้
ปรับขนาดฟังก์ชัน () ( bd = document.body.style; System.Gadget.beginTransition (); if (System.Gadget.docked) ( // สถานะขนาดเล็ก bd.width=148; // กำหนดขนาดของแกดเจ็ต bd.height=201 ; Docked = 1; bd.background="url(images/gadget.png) no-repeat"; //set background //transfer value from undocked to docked state and zero out elements for undocked state document.getElementById(" small_needupdate ").innerHTML = document.getElementById("big_needupdate").innerHTML; document.getElementById("big_needupdate").innerHTML = ""; //... ) อื่น ( // big state bd.width=230; bd .height=160; bd.background="url(images/gadgeth.png) no-repeat"; Docked=0; //โอนค่าจาก Docked ไปยัง Unocked State และรีเซ็ตองค์ประกอบสำหรับ Docked State Document.getElementById("big_needupdate ") innerHTML = document.getElementById("small_needupdate").innerHTML; document.getElementById("small_needupdate").innerHTML = ""; //... ) System.Gadget.endTransition(System.Gadget.TransitionType.morph, 1); )
คุณยังสามารถอธิบายฟังก์ชันการตั้งค่าบันทึก พวกมันไม่ได้อยู่ในแกดเจ็ตของฉัน แต่ฉันจะแสดงตัวอย่างว่าทำงานอย่างไร
การตั้งค่าฟังก์ชันปิด(เหตุการณ์) ( ถ้า (เหตุการณ์.closeAction == เหตุการณ์.Action.commit) ( //alert System.Gadget.Settings.readString("ทดสอบ"); ) )
ReadString - อ่านสตริงที่บันทึกไว้ก่อนหน้านี้, writeString, ตามลำดับ, เขียน
วิธีการ System.Gadget.beginTransition(); และ System.Gadget.endTransition(); จำเป็นต้องเปลี่ยนขนาดของแกดเจ็ตอย่างราบรื่น พวกมันถูกละเว้นใน Windows Seven แต่ฉันยังคงทิ้งมันไว้สำหรับความเข้ากันได้แบบย้อนกลับ
ตามที่กล่าวไว้ข้างต้น เซิร์ฟเวอร์ให้ข้อมูลสภาพอากาศแก่เราในรูปแบบ xml
1.7 41 หิมะปกคลุม 87 SW 5 -3 -1 -1 26 1 -9 41 0 …
เราจะดาวน์โหลดและแยกวิเคราะห์ XML โดยใช้ VBScript
Sub DownloadXML2 ตั้งค่า objXML = CreateObject("Microsoft.XmlHttp") objXML.Open "GET", "http://info.kovonet.ru/weather.xml", True objXML.OnReadyStateChange = GetRef("objXML_onreadystatechange") objXML.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" objXML.Send iTimeoutID = window.SetTimeout("mySleep", 1000) End Sub
ฟังก์ชั่น mySleep จะตรวจสอบการเชื่อมต่อของเราสำหรับการหมดเวลา
ย่อย mySleep ถ้า bRespReceived = "false" จากนั้น "ยังไม่ได้รับการตอบกลับ iTimeout = iTimeout + 1 ถ้า (iTimeout > 30) จากนั้น "timeout timerFirstRun = window.SetTimeout("Update", 60000) " พยายามอัปเดตใหม่ในอีกไม่กี่นาทีข้างหน้า "ยังไม่หมดเวลา ให้นับวินาทีต่อไป iTimeoutID = window.SetTimeout("mySleep", 1000) end if end if End Sub
หากการดาวน์โหลดสำเร็จ objXML.readyState จะเท่ากับสี่ และสถานะ (objXML.status) จะส่งกลับค่า 200
ฟังก์ชัน objXML_onreadystatechange() ถ้า (objXML.readyState = 4) แล้วก็ "msgbox objXML.statusText ถ้า (objXML.status = 200) แล้วก็ bRespReceived=true SaveFile(objXML.responseText) อย่างอื่น timerFirstRun = window.SetTimeout("Update", 60000) " พยายามอัปเดตอีกครั้งในหนึ่งนาที End If End If End Function
ในกรณีนี้ ให้บันทึกไฟล์ไปยังโฟลเดอร์ Windows ชั่วคราว
ฟังก์ชัน SaveFile(อะไร) ตั้ง fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Dim fso1, tf Set fso1 = CreateObject("Scripting.FileSystemObject") Set tf = fso1.CreateTextFile(เส้นทางไฟล์, True, True) "เขียนใหม่, ยูนิโค้ด tf.Write(อะไร) tf.Close ParseXML End Function
และเราเริ่มแยกวิเคราะห์ไฟล์
Sub ParseXML Set fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Set xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.async="false" xmlDoc load(filepath) "โหนดหลัก - ในกรณีของเรา
การตรวจสอบเวอร์ชันใหม่จะทำในลักษณะเดียวกันทุกประการ
อย่าลืมสร้างไฟล์การตั้งค่า - settings.html ซึ่งเราได้ประกาศไว้ข้างต้น
การตั้งค่า
นั่นคือทั้งหมด ฉันจะดีใจถ้าบทความ (แรก :)) ของฉันมีประโยชน์กับใครบางคน
แหล่งที่ใช้
สร้าง วิดเจ็ต WordPress- นี่เป็นวิธีการสร้างปลั๊กอินโดยประมาณ แต่ง่ายกว่าและชัดเจนกว่ามาก สิ่งที่คุณต้องมีคือไฟล์เดียวที่มีทุกอย่าง พี.เอช.พีโค้ดที่เขียนได้ง่ายกว่าปลั๊กอินที่มีหลายไฟล์ มีสามหน้าที่หลักของวิดเจ็ต: เหล่านี้คือ วิดเจ็ต, อัปเดตและ รูปร่าง.
- วิดเจ็ตฟังก์ชัน ()
- การปรับปรุงฟังก์ชั่น ()
- แบบฟอร์มฟังก์ชัน()
| แหล่งดาวน์โหลด |
โครงสร้างพื้นฐาน
รูปแบบพื้นฐานของวิดเจ็ตของเราเรียบง่ายมาก มีคุณลักษณะที่มีประโยชน์ที่คุณจำเป็นต้องรู้ แกนหลักของโครงสร้างวิดเจ็ตของเราจะเป็นดังนี้:
Add_action("widgets_init", "register_my_widget"); // ฟังก์ชันสำหรับโหลดวิดเจ็ตของฉัน ฟังก์ชัน register_my_widget() () // ฟังก์ชันสำหรับลงทะเบียนคลาสวิดเจ็ตของฉัน My_Widget ขยาย WP_Widget () () // ตัวอย่างฟังก์ชันคลาสวิดเจ็ต My_Widget() () // ฟังก์ชันการตั้งค่าวิดเจ็ต widget() () // แสดงฟังก์ชันวิดเจ็ต อัปเดต () () // อัปเดตฟอร์มฟังก์ชันวิดเจ็ต () () // และแน่นอน แบบฟอร์มสำหรับตัวเลือกวิดเจ็ต
ขั้นตอนที่ 1. widget_init
ก่อนที่เราจะดำเนินการทั้งหมดนี้ เราต้องโหลดวิดเจ็ตของเราด้วยฟังก์ชัน widget_init. นี่เป็นเงื่อนงำ การกระทำซึ่งคุณสามารถค้นหาข้อมูลเพิ่มเติมได้ใน WordPress codex
Add_action("widgets_init", "register_my_widget");
สิ่งต่อไปที่เราจะทำคือ ลงทะเบียนวิดเจ็ตของเราใน WordPress เพื่อให้มีอยู่ในส่วนวิดเจ็ต
ฟังก์ชัน register_my_widget() ( register_widget("My_Widget"); )
ขั้นตอนที่ 2 ระดับ
เราจะใส่วิดเจ็ตของเราเข้าไป ระดับ. ชื่อชั้นสำคัญ! สิ่งที่เราต้องจำไว้คือชื่อคลาสและชื่อฟังก์ชันควรเป็น เหมือน.
คลาส My_Widget ขยาย WP_Widget()
ตอนนี้เราจะผ่านไปยังชั้นเรียนบางส่วน ตัวเลือกการตั้งค่า. เช่น เราผ่านไปได้ ความกว้างและ ความสูง. เรายังสามารถให้ขนาดเล็ก คำอธิบายวิดเจ็ตของเราหากเราต้องการ สิ่งนี้จะเป็นประโยชน์หากคุณกำลังเชื่อมโยงวิดเจ็ตกับธีมเชิงพาณิชย์ของคุณ
ฟังก์ชัน My_Widget() ( ฟังก์ชัน My_Widget() ( $widget_ops = array("ชื่อคลาส" => "ตัวอย่าง", "คำอธิบาย" => __("วิดเจ็ตที่แสดงชื่อผู้แต่ง ", "ตัวอย่าง")); $control_ops = array("width" => 300, "height" => 350, "id_base" => "example-widget"); $this->WP_Widget("example-widget", __("ตัวอย่างวิดเจ็ต", "example" ), $widget_ops, $control_ops); )
เมื่อเราได้ดำเนินการตามข้อกำหนดพื้นฐานสำหรับวิดเจ็ตของเราเสร็จแล้ว เราจะมาให้ความสนใจกันที่ สามฟังก์ชั่นซึ่งเราได้พูดถึงไปก่อนหน้านี้ และฟังก์ชันใดที่สำคัญหรือองค์ประกอบพื้นฐานในการสร้างวิดเจ็ตของเรา!
ขั้นตอนที่ 3. functionwidget()
ฟังก์ชันแรกเกี่ยวข้องกับ แสดงวิดเจ็ตของเรา เราจะส่งไม่กี่ ข้อโต้แย้งต่อหน้าที่ของเรา เราจะส่งข้อโต้แย้งจากหัวข้อ อาจเป็นชื่อเรื่องหรือพารามิเตอร์อื่นๆ ตอนนี้เรากำลังผ่านตัวแปร ตัวอย่างซึ่งเชื่อมโยงกับคลาสฟังก์ชันของเรา
วิดเจ็ตฟังก์ชัน ($args, $อินสแตนซ์)
หลังจากนั้นเราก็สกัด ตัวเลือกจากการโต้แย้งเพราะเราต้องการตัวเลือกให้พร้อมใช้งานในพื้นที่ หากคุณไม่รู้ว่าตัวแปรโลคัลคืออะไร ไม่ต้องกังวลในตอนนี้และเพิ่มขั้นตอนนี้
แยก ($ args);
ต่อไปเราจะตั้งค่า หัวข้อและ ตัวเลือกอื่นสำหรับวิดเจ็ตของเรา ซึ่งผู้ใช้สามารถเปลี่ยนแปลงได้ในเมนูของวิดเจ็ต เรายังเพิ่มตัวแปรพิเศษเช่น $before_widget, $after_widget. ตัวเลือกเหล่านี้จัดการโดยธีม
$title = apply_filters("widget_title", $อินสแตนซ์["title"]); $ชื่อ = $อินสแตนซ์["ชื่อ"]; $show_info = isset($อินสแตนซ์["show_info"]) ? $instance["show_info"] : เท็จ; สะท้อน $before_widget; // แสดงชื่อวิดเจ็ต if ($title) echo $before_title $ชื่อ. $after_title; // แสดงชื่อ if ($name) printf("
" . __("เฮ้กะลาสีของพวกเขา! ฉันชื่อ %1$s", "ตัวอย่าง") "
", $name); if ($show_info) printf($name); echo $after_widget;ขั้นตอนที่ 4. ปรับปรุงฟังก์ชัน()
การอัปเดตฟังก์ชัน($new_instance, $old_instance) ( $instance = $old_instance; //ตัดแท็กออกจากชื่อและชื่อเพื่อลบ HTML $instance["title"] = strip_tags($new_instance["title"]); $instance[" name"] = strip_tags($new_instance["name"]); $instance["show_info"] = $new_instance["show_info"]; return $instance; )
สิ่งหนึ่งที่ควรทราบคือที่นี่เราใช้ strip_tagsเพื่อลบข้อความทั้งหมด เอ็กซ์เอชทีเอ็มแอลซึ่งสามารถทำลายวิดเจ็ตของเราได้
ขั้นตอนที่ 5. แบบฟอร์มฟังก์ชัน()
ในขั้นตอนต่อไปเราจะสร้าง รูปร่างซึ่งจะทำหน้าที่ บล็อกอินพุต. จะยอมรับการตั้งค่าและค่าที่ผู้ใช้กำหนด การทำงาน รูปร่างอาจรวมถึงช่องทำเครื่องหมาย ช่องป้อนข้อความ ฯลฯ
ก่อนที่เราจะสร้างช่องป้อนข้อมูลเหล่านี้ เราต้องตัดสินใจว่าจะแสดงอะไรเมื่อผู้ใช้ไม่ได้เลือกสิ่งใดจากวิดเจ็ต ในการทำเช่นนี้ เราจะส่งค่าเริ่มต้นสำหรับพารามิเตอร์ เช่น ชื่อ คำอธิบาย และอื่นๆ
//ตั้งค่าวิดเจ็ตเริ่มต้น $defaults = array("title" => __("ตัวอย่าง", "example"), "name" => __("Bilal Shaheen", "example"), "show_info" => true); $instance = wp_parse_args((อาร์เรย์) $instance, $defaults); ?>
ตอนนี้เราจะสร้าง ช่องใส่ข้อความ. เราจะใส่ค่าเหล่านี้ในแท็กย่อหน้า
// ชื่อวิดเจ็ต: การป้อนข้อความ
"ชื่อ="get_field_name("ชื่อเรื่อง"); ?>"value=""สไตล์="ความกว้าง:100%;" />
// ป้อนข้อความ"ชื่อ="get_field_name("ชื่อ"); ?>"value=""สไตล์="ความกว้าง:100%;" />
// ช่องทำเครื่องหมายรหัส = "get_field_id("show_info"); ?>"ชื่อ="get_field_name("show_info"); ?>" />
บทสรุป
ตกลงมันจบลงแล้ว คุณเพิ่งสร้างวิดเจ็ตที่ดีและเรียบง่ายที่แสดงชื่อผู้เขียนบล็อก นอกจากนี้ยังช่วยให้ผู้ใช้สามารถเลือกได้ว่าจะแสดงข้อมูลให้กับผู้ชมหรือไม่ บันทึกรหัสไปที่ ไฟล์ PHPและอัปโหลดไปยังโฟลเดอร์ธีมของคุณ เรียกมันในของคุณ functions.php. หลังจากนั้นไปที่คอนโซลใน ลักษณะที่ปรากฏ → วิดเจ็ตและคุณจะเห็นวิดเจ็ตของคุณ
โค้ดทั้งหมดนี้รวมอยู่ในไฟล์ที่แนบมากับบทความ ดังนั้นการคัดลอกและวางจึงง่ายยิ่งขึ้นไปอีก สนุก!