การสร้างวิดเจ็ตสำหรับเดสก์ท็อป การเขียน Windows Sidebar Gadget จาก Scratch Create Widgets




วันนี้เราจะมาดูวิธีสร้างวิดเจ็ต (Widget) ของคุณเองบนอุปกรณ์ Android วิดเจ็ตเป็นองค์ประกอบที่คุ้นเคยของเดสก์ท็อป ซึ่งคุณสามารถเข้าถึงฟังก์ชันบางอย่างของแอปพลิเคชันได้: ดูข่าวในหน้าต่างวิดเจ็ต พยากรณ์อากาศ อัปเดตข่าวสารเกี่ยวกับบริการต่างๆ จัดการฟังก์ชันต่างๆ ของอุปกรณ์ (ล็อกหน้าจอ เปิดวิทยุ อินเทอร์เน็ต และอื่นๆ อีกมากมาย) ครั้งนี้เราจะไม่สร้างสิ่งที่ยิ่งใหญ่และมีประโยชน์มากเหมือนไฟฉาย :) แต่เราจะสร้างวิดเจ็ตง่ายๆ ที่จะใช้เป็นปุ่ม เมื่อคุณคลิกโดยใช้เบราว์เซอร์มาตรฐาน เราจะไปที่รายการโปรดของทุกคน ไซต์ แน่นอนคุณสามารถปรับแต่งไซต์ใดก็ได้ที่คุณต้องการ

เราสร้างโครงการใหม่ เลือก Blank Activity ซึ่งเป็นเวอร์ชันขั้นต่ำของ Android 2.2+ เมื่อสร้างวิดเจ็ต สิ่งแรกที่ต้องทำคือสร้างวัตถุ AppWidgetProviderInfoซึ่งเราระบุไฟล์ xml ที่จะเติมเต็มมุมมองของวิดเจ็ตเอง ในการทำเช่นนี้ ให้สร้างโฟลเดอร์ในโครงการ ความละเอียด/xmlและในนั้นเราสร้างไฟล์ xml ใหม่ชื่อ widget.xmlโดยมีเนื้อหาดังนี้

< 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. ควรมีลักษณะดังนี้:

< 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 name= "action_settings" >การตั้งค่า < 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" ในแถบค้นหาแอปพลิเคชัน)
  • หลังจากเลือกเค้าโครงที่คุณต้องการแล้ว แอปพลิเคชันจะดำเนินการแก้ไขต่อไป การตั้งค่าต่อไปนี้จะใช้งานได้:
  1. องค์ประกอบที่รับผิดชอบในการตั้งค่าพารามิเตอร์ทางเรขาคณิตของวิดเจ็ต
  2. พื้นหลัง รับผิดชอบภาพพื้นหลังบนวิดเจ็ต
  3. แตะ ซึ่งระบุการกระทำที่จะดำเนินการเมื่อเปิดใช้งานวิดเจ็ต
  4. เลเยอร์ที่รับผิดชอบขนาดของวิดเจ็ต

เป็นผลให้เราได้รับวิดเจ็ตที่ไม่ซ้ำใครพร้อมฟังก์ชันที่จำเป็น

ฉันเพิ่งจำเป็นต้องสร้างโปรแกรมเบ็ดเตล็ดสำหรับ Windows Sidebar ฉันไม่มีทักษะด้านนี้ ดังนั้นหลังจากกูเกิลและอ่านเอกสารประกอบแล้ว ก็เริ่มกันเลย

ฉันจะแสดงให้คุณเห็นว่าฉันลงเอยด้วยอะไร


แกดเจ็ตจะรับข้อมูลจากไซต์ในรูปแบบของ xml แยกวิเคราะห์และแสดงข้อมูลดังกล่าว แกดเจ็ตจะตรวจสอบเวอร์ชันใหม่และหากมีให้ปฏิเสธที่จะทำงาน :)
ในขั้นต้น เพื่อเพิ่มพูนประสบการณ์ ฉันต้องการเขียนแกดเจ็ตทั้งหมดใน VBScript (เนื่องจากฉันยังไม่ได้จัดการกับมัน) แต่สุดท้ายฉันต้องแทรกใน JavaScript
ไปที่รหัสโดยตรง ฉันจะไม่พิจารณาโค้ดทั้งหมดที่นี่ ฉันจะแสดงเฉพาะประเด็นหลักเท่านั้น ลิงก์ไปยังแกดเจ็ตที่เสร็จสมบูรณ์อยู่ที่ส่วนท้ายของบทความ
ไฟล์หลักของโปรแกรมเบ็ดเตล็ดคือไฟล์รายการ Gadget.xml ควรเรียกแบบนั้นและอยู่ในรูทของไฟล์เก็บถาวรของเรา (แกดเจ็ตไม่มีอะไรมากไปกว่าไฟล์เก็บถาวร ZIP ที่มีนามสกุล .gadget)

สภาพอากาศจาก Info.Denms.Ru 1.0.1232 วิดเจ็ตสภาพอากาศแบบเต็ม (Info.Denms.Ru)

ลองพิจารณาในรายละเอียดเพิ่มเติม
องค์ประกอบ ควรมี apiVersion เท่ากับ 1.0.0 (ในขณะนี้) รวมถึงแอตทริบิวต์ src ซึ่งระบุไฟล์หลักของแกดเจ็ตของเรา
สิทธิ์ของแกดเจ็ต ตั้งค่าเท่ากับเต็ม
เวอร์ชันขั้นต่ำของ Windows Sidebar ในขณะนี้ - 1.0;
ตัวเลือก - ชื่อแกดเจ็ต - รุ่น - ข้อมูลเกี่ยวกับผู้เขียน - เชื่อมโยงไปยังหน้าด้วยแกดเจ็ต - ไอคอนแกดเจ็ตและ จะปรากฏในแผงของโปรแกรมเบ็ดเตล็ดที่ติดตั้ง

ไฟล์ 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) "โหนดหลัก - ในกรณีของเรา ตั้ง currNode = xmlDoc.documentElement "วันในสัปดาห์ - ตั้งค่า dayNode = currNode.firstChild ในขณะที่ไม่ใช่ dayNode ไม่มีอะไรเลย ตั้งค่า currNode = dayNode.firstChild ในขณะที่ไม่ใช่ currNode ไม่มีอะไรเลย ถ้า currNode.parentNode.getAttribute("id") = "today" แล้วก็ "today ถ้า currNode.nodeName = "temp" จากนั้นเอกสาร .getElementById(คำนำหน้า+"maintemp").innerHTML = currNode.childNodes(0).text+Chr(176) "แสดงองค์ประกอบอื่น ๆ อื่น ๆ "ไม่ใช่วันนี้ แสดงขนาดเล็กลง"... end ถ้า Set currNode = currNode.nextSibling Wend Set dayNode = dayNode.nextSibling สิ้นสุด Sub

การตรวจสอบเวอร์ชันใหม่จะทำในลักษณะเดียวกันทุกประการ
อย่าลืมสร้างไฟล์การตั้งค่า - 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. หลังจากนั้นไปที่คอนโซลใน ลักษณะที่ปรากฏ → วิดเจ็ตและคุณจะเห็นวิดเจ็ตของคุณ

โค้ดทั้งหมดนี้รวมอยู่ในไฟล์ที่แนบมากับบทความ ดังนั้นการคัดลอกและวางจึงง่ายยิ่งขึ้นไปอีก สนุก!