Δημιουργία widget για την επιφάνεια εργασίας σας. Σύνταξη ενός gadget Sidebar των Windows από την αρχή Δημιουργία γραφικών στοιχείων




Σήμερα θα καταλάβουμε πώς να δημιουργήσετε το δικό σας widget σε μια συσκευή Android. Το widget είναι ένα οικείο στοιχείο επιφάνειας εργασίας με το οποίο μπορείτε να έχετε πρόσβαση σε ορισμένες λειτουργίες μιας εφαρμογής: προβολή ειδήσεων στο παράθυρο του widget, πρόγνωση καιρού, ενημέρωση ειδήσεων σε διάφορες υπηρεσίες, έλεγχος διαφόρων λειτουργιών της συσκευής (κλείδωμα οθόνης, ενεργοποίηση ραδιοφώνου, Διαδίκτυο και πολλά άλλα). Αυτή τη φορά δεν θα δημιουργήσουμε κάτι μεγαλειώδες και πολύ χρήσιμο, όπως ένας φακός :), αλλά θα φτιάξουμε ένα απλό widget που θα υλοποιηθεί με τη μορφή ενός κουμπιού, όταν κάνουμε κλικ σε αυτό, χρησιμοποιώντας ένα τυπικό πρόγραμμα περιήγησης, θα μεταφερθούμε στο ο αγαπημένος ιστότοπος όλων Φυσικά, μπορείτε να προσαρμόσετε όποιον ιστότοπο θέλετε.

Δημιουργήστε ένα νέο έργο, επιλέξτε Κενή δραστηριότητα, ελάχιστη έκδοση Android 2.2+. Όταν δημιουργείτε ένα widget, το πρώτο πράγμα που πρέπει να κάνετε είναι να δημιουργήσετε ένα αντικείμενο AppWidgetProviderInfo, στο οποίο θα καθορίσουμε το αρχείο xml από το οποίο θα συμπληρωθεί η προβολή του ίδιου του widget. Για να το κάνετε αυτό, δημιουργήστε έναν φάκελο στο έργο res/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και να δημιουργήσουμε τη διεπαφή του widget μας, θα αποτελείται από ένα κουμπί Κουμπί:

< LinearLayout xmlns: android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android: layout_width= "match_parent" android: layout_height= "match_parent" android: gravity= "top" εργαλεία: 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, για το οποίο υπάρχει η κύρια μέθοδος του onUpdate(). Σε αυτή τη μέθοδο πρέπει να ορίσουμε δύο αντικείμενα: PendingIntentΚαι RemoteViews. Στο τέλος της χρήσης τους, πρέπει να καλέσετε τη μέθοδο updateAppWidget(). Κωδικός αρχείου 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 (Context context, AppWidgetManager appWidgetManager, int appWidgetIds) ( για (int i= 0; i< appWidgetIds. length; i++ ){ int currentWidgetId = appWidgetIds[i]; //Κάντε ένα απλό αίτημα http στον καθορισμένο σύνδεσμο και ακολουθήστε το: String url = "http://site" ; Intent intent = νέα Πρόθεση (Intent . ACTION_VIEW) πρόθεση. addFlags(Πρόθεση . FLAG_ACTIVITY_NEW_TASK) πρόθεση. setData(Uri . parse(url)); //Ορίζουμε δύο απαιτούμενα αντικείμενα της κλάσης PendingIntent και RemoteViews: PendingIntent pending = PendingIntent . getActivity(context, 0 , intent, 0 ); RemoteViews views = new RemoteViews(context. getPackageName(),R. layout. activity_main); //Ρυθμίστε την επεξεργασία ενός κλικ για να προσθέσετε ένα γραφικό στοιχείο:προβολές. setOnClickPendingIntent(R . id. button, σε εκκρεμότητα); appWidgetManager. updateAppWidget(currentWidgetId,views); Τοστ. makeText(context, "Το widget προστέθηκε", Τοστ . LENGTH_SHORT). προβολή(); ) ))

Για να λειτουργήσει με επιτυχία το γραφικό στοιχείο μας, χρειαζόμαστε λίγη μαγεία στο αρχείο δήλωσης AndroidManifest.xml. Θα πρέπει να μοιάζει με αυτό:

< manifest xmlns: android= "http://schemas.android.com/apk/res/android"πακέτο ="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" >ΜΑΘΑΙΝΩ. ANDROID < string name= "action_settings" >Ρυθμίσεις < string name= "hello_world" >Γειά σου Κόσμε!< / string> < / resources>

Προσοχή! Το Android Studio μπορεί να σας βρίζει όταν ξεκινάτε το πρόγραμμα, απαιτώντας από εσάς να καθορίσετε μια προεπιλεγμένη δραστηριότητα. Επιλέξτε τη γραμμή "Να μην ξεκινήσει η δραστηριότητα":

Τώρα εγκαταστήστε την εφαρμογή στον εξομοιωτή ή στη συσκευή, προσθέστε το γραφικό στοιχείο στην επιφάνεια εργασίας:

Και κάντε κλικ σε αυτό:


Όπως μπορείτε να δείτε, όλα λειτουργούν υπέροχα.

Έτσι, σε αυτό το σεμινάριο δημιουργήσαμε ένα απλό Γραφικό στοιχείο Android, που αποτελείται από ένα Κουμπί, όταν κάνετε κλικ στο γραφικό στοιχείο μας, δημιουργούμε ένα απλό αίτημα http και ακολουθούμε τον σύνδεσμο που δίνεται στη διεύθυνση URL. Μπορείτε να εξασκηθείτε με κάποια άλλα στοιχεία, όχι με ένα κουμπί, και να βρείτε ενδιαφέρουσες λειτουργίες για αυτά. Καλή τύχη!

Ωστε να φτιάξτε ένα widget στο AndroidΔεν είναι καθόλου απαραίτητο να ξέρεις να προγραμματίζεις. Υπάρχουν πολλές εφαρμογές σχεδιασμού που διευκολύνουν τη σχεδίαση ενός widget και του δίνουν την επιθυμητή λειτουργικότητα.

Μινιμαλιστικό κείμενο

Η εφαρμογή σάς επιτρέπει να δημιουργείτε μινιμαλιστικά widget που αποτελούνται από κείμενο και αριθμούς. Παρά το όνομα, αυτά τα γραφικά στοιχεία έχουν πολύ ευρείες δυνατότητες.

Μετά την εγκατάσταση, προσθέστε ένα γραφικό στοιχείο Minimalistic Text του απαιτούμενου μεγέθους στην επιφάνεια εργασίας σας. Θα ανοίξει το παράθυρο ρυθμίσεων widget.

Στις ρυθμίσεις μπορείτε να επιλέξετε το φόντο, τον προσανατολισμό, τη γραμματοσειρά, την ενέργεια κλικ κ.λπ. Επίσης στις ρυθμίσεις υπάρχουν προκαθορισμένες διατάξεις για συμπλήρωση:

  • Χρόνος.
  • Ημερομηνία
  • Επίπεδο φόρτισης.
  • Θερμοκρασία.

Διατίθενται πρόσθετες επιλογές για τη συμπλήρωση του γραφικού στοιχείου κατά τη δημιουργία της δικής σας διάταξης γραφικού στοιχείου:

  • Κείμενο.
  • Ελεύθερος/χρησιμοποιημένος χώρος στην κάρτα SD.
  • Χρόνος λειτουργίας του συστήματος.
  • Ο όγκος των δεδομένων που μεταφέρονται μέσω του δικτύου κινητής τηλεφωνίας και πολλά άλλα.
  • Όνομα του δικτύου Wi-Fi, διεύθυνση IP στο δίκτυο Wi-Fi.
  • Ποσότητα χρησιμοποιημένης RAM.

Όλες οι τιμές μπορούν να εμφανιστούν σε κείμενο και σε αριθμούς.

Απόλυτο προσαρμοσμένο γραφικό στοιχείο (UCCW)

Αυτή η εφαρμογή σάς επιτρέπει να δημιουργείτε γραφικά στοιχεία όχι μόνο από κείμενο, αλλά και με γραφικό περιεχόμενο.

Όταν εκκινηθεί, ανοίγει το παράθυρο δημιουργίας widget. Για να προσθέσετε ένα αντικείμενο στο γραφικό στοιχείο, κάντε κλικ στο κουμπί +/- στο επάνω μέρος. Για να το μετακινήσετε και να το επεξεργαστείτε με οποιονδήποτε τρόπο, κάντε κλικ στο κουμπί "Επιλογή αντικειμένου" στο επάνω μέρος και επιλέξτε το αντικείμενο που προστέθηκε.

Μπορείτε να τοποθετήσετε τα ακόλουθα αντικείμενα σε widget:

  • Ώρα, ημερομηνία και ημέρα της εβδομάδας.
  • Αναλογικό ρολόι.
  • Προσαρμοσμένο κείμενο.
  • Το επίπεδο φόρτισης σε αριθμούς ή μια γραφική απεικόνιση του.
  • Όλες οι πληροφορίες για τον καιρό - θερμοκρασία, υγρασία, ταχύτητα ανέμου κ.λπ.
  • Γεωμετρικά σχήματα.
  • εικόνες.
  • Αριθμός μη αναγνωσμένων email Gmail, sms και αναπάντητων κλήσεων.
  • Η ώρα που θα χτυπήσει το ξυπνητήρι.

Κάθε στοιχείο μπορεί να περιστραφεί, να τεντωθεί, να λυγίσει και να αλλάξει το χρώμα του. Φυσικά, μπορείτε να διαμορφώσετε την ενέργεια κλικ (Επιλέξτε αντικείμενο->Hotspots). Υποστηρίζεται η εισαγωγή και εξαγωγή δημιουργημένων γραφικών στοιχείων.

Το λειτουργικό σύστημα Android έχει πολλές λειτουργίες και δυνατότητες. Ένα από αυτά είναι τα widgets - παράθυρα που σας επιτρέπουν να χρησιμοποιήσετε μέρος της λειτουργικότητας της εφαρμογής χωρίς να την εκκινήσετε.

Βασικά, τα widget συνοδεύονται από την εφαρμογή. Ωστόσο, υπάρχουν προγράμματα που δεν έχουν αυτήν την επιλογή. Αυτό σημαίνει ότι πρέπει να πάρετε την κατάσταση στα χέρια σας!

  • Χρησιμοποιώντας το Play Market, κατεβάζουμε τη δωρεάν εφαρμογή "KWGT Kustom Widget Maker", η οποία μπορεί να αγοραστεί δωρεάν, αλλά ορισμένες λειτουργίες θα είναι διαθέσιμες μόνο μετά την αγορά του πρόσθετου.

Το πρόγραμμα λειτουργεί ως πλατφόρμα για την εκκίνηση γραφικών στοιχείων τρίτων από διαφορετικούς προγραμματιστές. Επιπλέον, μπορείτε να αλλάξετε την εμφάνιση των γραφικών στοιχείων και να τους δώσετε πρόσθετη λειτουργικότητα.


Αρχικά, μπορεί να σκεφτείτε ότι το "KWGT Kustom Widget Maker" είναι μια πολύπλοκη εφαρμογή που μοιάζει με προγράμματα ανάπτυξης λογισμικού. Ναι και όχι: η διεπαφή είναι παρόμοια, αλλά δεν υπάρχει τίποτα περίπλοκο εδώ.


Για να ξεκινήσετε την επεξεργασία γραφικών στοιχείων:

  • μεταβείτε στην επιφάνεια εργασίας και καλέστε το μενού για επεξεργασία επιτραπέζιων υπολογιστών κρατώντας πατημένο το κουμπί μενού ή πατώντας παρατεταμένα την οθόνη.
  • βρείτε το πλαίσιο του γραφικού στοιχείου "KWGT" και ορίστε το απαιτούμενο μέγεθος, για παράδειγμα - 4x2. Μετά από αυτό, εμφανίζεται ένα παράθυρο στην επιφάνεια εργασίας.
  • Κάντε κλικ στο παράθυρο, ανοίγοντας έτσι το μενού επιλογής widget.
  • Επιλέξτε τη διάταξη που σας αρέσει και κάντε κλικ σε αυτήν (Μπορείτε να λάβετε πρόσθετες διατάξεις από το Play Store. Για να το κάνετε αυτό, καθορίστε "KWGT widgets" στη γραμμή αναζήτησης της εφαρμογής).
  • Αφού επιλέξετε τη διάταξη που σας αρέσει, η εφαρμογή θα προχωρήσει στην επεξεργασία της. Θα είναι διαθέσιμες οι ακόλουθες ρυθμίσεις:
  1. Στοιχεία υπεύθυνα για τη ρύθμιση των γεωμετρικών παραμέτρων του widget.
  2. Φόντο, υπεύθυνο για την εικόνα φόντου στο γραφικό στοιχείο.
  3. Ένα άγγιγμα που καθορίζει τις ενέργειες που θα εκτελεστούν όταν ενεργοποιηθεί το γραφικό στοιχείο.
  4. Το επίπεδο που είναι υπεύθυνο για την κλίμακα του γραφικού στοιχείου.

Ως αποτέλεσμα, θα λάβουμε ένα μοναδικό widget με την απαραίτητη λειτουργικότητα.

Πρόσφατα χρειάστηκε να δημιουργήσω ένα gadget για την πλευρική γραμμή των Windows. Δεν είχα καμία ικανότητα σε αυτό, οπότε αφού γκουγκλάρισα λίγο και διάβασα την τεκμηρίωση, ας ξεκινήσουμε.

Θα σας δείξω αμέσως με τι κατέληξα.


Το gadget θα λάβει πληροφορίες από τον ιστότοπο σε μορφή xml, θα τις αναλύσει και, στην πραγματικότητα, θα τις εμφανίσει. Το gadget θα ελέγξει επίσης για νέες εκδόσεις και, εάν υπάρχουν, αρνηθείτε να εργαστείτε :)
Αρχικά, για χάρη της απόκτησης εμπειρίας, ήθελα να γράψω ένα gadget εξ ολοκλήρου σε VBScript (μιας και δεν είχα ασχοληθεί ακόμα με αυτό), αλλά στο τέλος έπρεπε να κάνω ένθετα σε JavaScript.
Ας περάσουμε απευθείας στον κώδικα. Δεν θα εξετάσω ολόκληρο τον κώδικα εδώ, θα δείξω μόνο τα κύρια σημεία. Ο σύνδεσμος για το τελικό gadget βρίσκεται στο τέλος του άρθρου.
Το κύριο αρχείο ενός gadget είναι το μανιφέστο του - το αρχείο Gadget.xml. Θα πρέπει να ονομάζεται ακριβώς έτσι και να βρίσκεται στη ρίζα του αρχείου μας (το gadget δεν είναι τίποτα άλλο από ένα αρχείο ZIP με την επέκταση .gadget).

Weather from Info.Denms.Ru 1.0.1232 Full Weather Widget (Info.Denms.Ru)

Ας το δούμε πιο αναλυτικά.
Στοιχείο πρέπει να περιέχει apiVersion ίσο με 1.0.0 (αυτή τη στιγμή), καθώς και το χαρακτηριστικό src, το οποίο καθορίζει το κύριο αρχείο του gadget μας.
Δικαιώματα για το gadget. Ορίστε ίσο με πλήρες.
Ελάχιστη έκδοση του Windows Sidebar. Επί του παρόντος – 1,0;
Επιλογές - όνομα gadget, - εκδοχή, - πληροφορίες για τον συγγραφέα, - σύνδεσμος στη σελίδα με το gadget, - εικονίδιο gadget και θα εμφανιστεί στον πίνακα των εγκατεστημένων gadget.

Το αρχείο main.html είναι ένα συνηθισμένο αρχείο html, δεν θα το απαριθμήσω πλήρως, θα σταθώ μόνο σε ορισμένα σημεία.
Το στοιχείο g:background χρησιμοποιείται για τον ορισμό του φόντου του gadget. Ας το κάνουμε διαφανές.

Το gadget μπορεί να βρίσκεται σε δύο καταστάσεις – συνδεδεμένο (στα αριστερά στην παραπάνω οθόνη) και αποσυνδεδεμένο (στα δεξιά). Θα αποθηκεύσουμε την τρέχουσα κατάσταση του gadget στη μεταβλητή με βάση JavaScript.

Θα χρειαστούμε τη λειτουργία isDocked wrapper στο μέλλον για να μάθουμε την τρέχουσα κατάσταση του gadget από το VBScript (όσο σκληρά κι αν προσπάθησα, δεν μπόρεσα να το εφαρμόσω σε καθαρό VBScript). Μια ακόμη σημείωση - τα σενάρια λειτουργούν σωστά με αυτήν τη σειρά, π.χ. Πρώτα περιγράφουμε σενάρια VBScript και μετά JavaScript.

Τα υπόλοιπα στοιχεία στο main.html είναι απολύτως τοποθετημένα στοιχεία DIV. Στη συνέχεια, από σενάρια θα έχουμε πρόσβαση σε αυτά με το αναγνωριστικό τους.

Χρησιμοποιώντας JavaScript, θα ορίσουμε τις καταστάσεις σύνδεσης και αποδέσμευσης για το gadget και επίσης θα καθορίσουμε το αρχείο ρυθμίσεων (main.js)

System.Gadget.onDock = αλλαγή μεγέθους; System.Gadget.onUndock = αλλαγή μεγέθους; System.Gadget.settingsUI = "settings.html"; System.Gadget.onSettingsClosed = SettingsClosed; docked=0; //αρχική κατάσταση του gadget resize(); //αρχικοποίηση

Όπως μπορείτε να δείτε από την παραπάνω λίστα, όταν αλλάξουν οι καταστάσεις του gadget, θα καλείται η συνάρτηση resize().

Συνάρτηση resize() ( bd = document.body.style; System.Gadget.beginTransition(); if (System.Gadget.docked) ( // μικρή κατάσταση bd.width=148; // ορίστε το μέγεθος του gadget bd.height= 201 ; η μη συνδεδεμένη κατάσταση document.getElementById("small_needupdate").innerHTML = document.getElementById("big_needupdate").innerHTML; document.getElementById("big_needupdate").innerHTML = ""; //... ) else ( //... κατάσταση bd.width=230;bd.background="url(images/gadgeth.png) no-repeat" κατάσταση document.getElementById("big_needupdate" = document.getElementById("small_needupdate").innerHTML; document.getElementById("small_needupdate").innerHTML = """ .Gadget.TransitionType.morph,1); )

Μπορείτε επίσης να περιγράψετε τη λειτουργία αποθήκευσης ρυθμίσεων. Το gadget μου δεν τα έχει, αλλά ως παράδειγμα θα σας δείξω πώς γίνεται.

Function SettingsClosed(event) ( if (event.closeAction == event.Action.commit) ( //alert System.Gadget.Settings.readString("test"); ) )

ReadString – διαβάζει μια προηγουμένως αποθηκευμένη συμβολοσειρά, η writeString, αντίστοιχα, γράφει.
Μέθοδοι System.Gadget.beginTransition(); και System.Gadget.endTransition(); απαιτείται για «ομαλή» αλλαγή μεγέθους του gadget. Αγνοούνται στα Windows Seven, αλλά παρόλα αυτά τα άφησα για συμβατότητα προς τα πίσω.

Όπως αναφέρθηκε παραπάνω, ο διακομιστής μας παρέχει πληροφορίες για τον καιρό σε μορφή xml.

1,7 41 συννεφιά χιονόπτωση 87 Νοτιοδυτικά 5 -3 -1 -1 26 1 -9 41 0…

Θα κατεβάσουμε και θα αναλύσουμε το xml χρησιμοποιώντας VBScript.

Sub DownloadXML2 Set objXML = CreateObject("Microsoft.XmlHttp") objXML.Open "GET", "http://info.kovonet.ru/weather.xml", True objXML.OnReadyStateChange = GetRef("objXML_onreadystatechange.Hederset") "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" objXML.Send iTimeoutID = window.SetTimeout("mySleep", 1000) End Sub

Η λειτουργία mySleep θα ελέγξει τη σύνδεσή μας για χρονικό όριο.

Sub mySleep if bRespReceived = "false" then "response not yet iTimeout = iTimeout + 1 if (iTimeout > 30) then "timeout timerFirstRun = window.SetTimeout("Update", 60000) "επιχειρήστε να κάνετε εκ νέου ενημέρωση σε ένα άλλο λεπτό "Το χρονικό όριο δεν έχει επιτευχθεί ακόμη, συνεχίστε να μετράτε τα δευτερόλεπτα iTimeoutID = παράθυρο. SetTimeout("mySleep", 1000) τέλος εάν λήξει εάν Τέλος υπο

Εάν η λήψη είναι επιτυχής, το objXML.readyState θα είναι ίσο με τέσσερα και το status (objXML.status) θα επιστρέψει την τιμή 200.

Συνάρτηση objXML_onreadystatechange() If (objXML.readyState = 4) Τότε "msgbox objXML.statusText If (objXML.status = 200) Στη συνέχεια bRespReceived=true SaveFile(objXML.responseText)un timerFirstRinthere,(0SpetR) timerFirstR. προσπαθήστε να ενημερώσετε ξανά σε ένα λεπτό Λειτουργία End If End If End

Σε αυτήν την περίπτωση, αποθηκεύστε το αρχείο σε έναν προσωρινό φάκελο των Windows

Συνάρτηση SaveFile(what) Ορισμός fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) διαδρομή αρχείου = tempFolder+"\weather.xml" Dim fso1, tf Ορισμός fso1 = CreateObject("Scripting.fject.bject.bject. = fso1.CreateTextFile(filepath, True, True) "rewrite, unicode tf.Write(what) tf.Close ParseXML End Function

Και αρχίζουμε να αναλύουμε το αρχείο.

Sub ParseXML Set fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Ορισμός xmlDoc = CreateObject("Msxml2.DOMDocument.") xml="DOMDOcument. load(filepath) "main node – στην περίπτωσή μας Ορίστε currNode = xmlDoc.documentElement "ημέρες της εβδομάδας – Ορισμός dayNode = currNode.firstChild ενώ Όχι dayNode Is Nothing Ορισμός currNode = dayNode.firstChild ενώ δεν currNode δεν είναι τίποτα εάν currNode.parentNode.getAttribute("id") = "σήμερα" τότε "σήμερα εάν currNode.nodeName τότε έγγραφο = "temp" .getElementById(πρόθεμα+"maintemp").innerHTML = currNode.childNodes(0).text+Chr(176) "εμφάνιση των υπολοίπων στοιχείων Αλλιώς "όχι σήμερα, εμφάνιση πιο λεπτή"... τέλος Εάν Ορισμός currNode = currNode.nextSibling Wend Ορισμός dayNode = dayNode.nextSibling Wend End Sub

Ο έλεγχος για νέες εκδόσεις γίνεται με τον ίδιο ακριβώς τρόπο.
Μην ξεχάσετε να δημιουργήσετε ένα αρχείο ρυθμίσεων - settings.html, την ύπαρξη του οποίου ανακοινώσαμε παραπάνω.

Ρυθμίσεις

Αυτό είναι όλο, στην πραγματικότητα. Θα χαιρόμουν αν το (πρώτο :)) άρθρο μου ήταν χρήσιμο σε κάποιον.

Χρησιμοποιημένες πηγές.

Δημιουργώ Γραφικό στοιχείο WordPress– αυτός είναι περίπου ο τρόπος δημιουργίας ενός πρόσθετου, αλλά πολύ πιο απλό και σαφές. Το μόνο που χρειάζεστε είναι ένα αρχείο με τα πάντα PHPκώδικα που είναι πολύ πιο εύκολο να γραφτεί από ένα πρόσθετο που έχει πολλά αρχεία. Υπάρχουν τρεις κύριες λειτουργίες του widget: αυτές είναι widget, εκσυγχρονίζωΚαι μορφή.

  • γραφικό στοιχείο συνάρτησης ()
  • ενημέρωση λειτουργίας ()
  • φόρμα συνάρτησης()

| Λήψη πηγών |

Βασική δομή

Ο βασικός σχεδιασμός του widget μας είναι πολύ απλός, υπάρχουν χρήσιμες λειτουργίες που πρέπει να γνωρίζετε. Η ραχοκοκαλιά της δομής του widget μας θα είναι κάπως έτσι:

Add_action("widgets_init", "register_my_widget"); // συνάρτηση για τη φόρτωση της συνάρτησης γραφικού στοιχείου register_my_widget() () // συνάρτηση για την εγγραφή της κλάσης του γραφικού μου στοιχείου My_Widget επεκτείνει το WP_Widget () () // Το παράδειγμα συνάρτησης κλάσης γραφικού στοιχείου My_Widget() () // Ρυθμίσεις γραφικού στοιχείου συνάρτηση widget() () // εμφάνιση της λειτουργίας widget update() () // ενημέρωση της φόρμας της συνάρτησης widget() () // και φυσικά η φόρμα για τις επιλογές widget

Βήμα 1. widget_init

Πριν τα κάνουμε όλα αυτά, πρέπει να φορτώσουμε το widget μας χρησιμοποιώντας τη συνάρτηση widget_init. Αυτό είναι μια ένδειξη για δράση, για το οποίο μπορείτε να βρείτε περισσότερες πληροφορίες στον κώδικα του WordPress.

Add_action("widgets_init", "register_my_widget");

Το επόμενο πράγμα που θα κάνουμε είναι ας εγγραφούμετο widget μας στο WordPress ώστε να είναι διαθέσιμο στην ενότητα widgets.

Συνάρτηση register_my_widget() ( register_widget("My_Widget"); )

Βήμα 2. Τάξη

Θα επισυνάψουμε το widget μας Τάξη. Το όνομα της τάξης έχει σημασία! Αυτό που πρέπει να έχουμε κατά νου είναι ότι το όνομα της κλάσης και το όνομα της συνάρτησης πρέπει να είναι πανομοιότυπο.

Η κλάση My_Widget επεκτείνει το WP_Widget()

Τώρα θα περάσουμε μερικά επιλογέςΡυθμίσεις. Για παράδειγμα, μπορούμε να στείλουμε πλάτοςΚαι ύψος. Μπορούμε να δώσουμε και ένα μικρό περιγραφήστο widget μας αν θέλουμε. Αυτό θα είναι χρήσιμο εάν συσχετίσετε το γραφικό στοιχείο με το εμπορικό σας θέμα.

Συνάρτηση My_Widget() ( συνάρτηση My_Widget() ( $widget_ops = array("classname" => "παράδειγμα", "description" => __("Ένα γραφικό στοιχείο που εμφανίζει το όνομα του συγγραφέα ", "παράδειγμα")); $control_ops = array("width" => 300, "height" => 350, "id_base" => "example-widget" $this->WP_Widget("example-widget", __("Example Widget", "example"); ), $widget_ops, $control_ops);

Τώρα που τελειώσαμε με τις βασικές απαιτήσεις για το widget μας, θα στρέψουμε την προσοχή μας τρεις λειτουργίες, για τα οποία μιλήσαμε νωρίτερα και που είναι σημαντικές λειτουργίες ή βασικά μπλοκ για την κατασκευή του widget μας!

Βήμα 3: Γραφικό στοιχείο συνάρτησης ()

Η πρώτη συνάρτηση αναφέρεται σε απεικόνισητο widget μας. Θα περάσουμε μερικά επιχειρήματαστη λειτουργία μας. Θα περάσουμε ορίσματα από το θέμα, αυτό μπορεί να είναι τίτλος ή κάποιες άλλες παράμετροι. Τώρα περνάμε τη μεταβλητή παράδειγμα, που σχετίζεται με την κλάση της συνάρτησής μας.

Γραφικό στοιχείο συνάρτησης ($args, $instance)

Μετά από αυτό εξάγουμε επιλογέςαπό ορίσματα γιατί χρειαζόμαστε οι παράμετροι να είναι διαθέσιμες τοπικά. Εάν δεν ξέρετε τι είναι μια τοπική μεταβλητή, μην ανησυχείτε τώρα και απλώς προσθέστε αυτό το βήμα.

extract($args);

Στη συνέχεια θα εγκαταστήσουμε τίτλοςΚαι άλλες παραμέτρουςγια το widget μας, το οποίο μπορεί να αλλάξει ο χρήστης στο μενού widget. Προσθέτουμε επίσης ειδικές μεταβλητές όπως $before_widget, $after_widget. Αυτές οι παράμετροι επεξεργάζονται από το θέμα.

$title = apply_filters("widget_title", $instance["title"]); $name = $instance["name"]; $show_info = isset($instance["show_info"]) ? $instance["show_info"] : false; echo $before_widget; // Εμφάνιση του τίτλου του γραφικού στοιχείου εάν ($title) echo $before_title . $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"]; επιστροφή $instance; )

Ένα πράγμα που πρέπει να σημειωθεί: εδώ χρησιμοποιούμε strip_tagsγια να αφαιρέσετε όλο το κείμενο από XHTML, το οποίο μπορεί να διαταράξει τη λειτουργία του γραφικού μας στοιχείου.

Βήμα 5. φόρμα συνάρτησης()

Στο επόμενο βήμα θα δημιουργήσουμε μορφήπου θα εξυπηρετήσει μπλοκ εισόδου. Θα δέχεται ρυθμίσεις και τιμές που καθορίζονται από το χρήστη. Λειτουργία μορφήμπορεί να περιλαμβάνει πλαίσια ελέγχου, πεδία εισαγωγής κειμένου κ.λπ.

Πριν δημιουργήσουμε αυτά τα πεδία εισαγωγής, πρέπει να αποφασίσουμε τι θα εμφανίζεται όταν ο χρήστης δεν επιλέγει τίποτα από το γραφικό στοιχείο. Για να γίνει αυτό, θα περάσουμε προεπιλεγμένες τιμές για τις παραμέτρους, όπως τίτλος, περιγραφή κ.λπ.

//Ρυθμίστε ορισμένες προεπιλεγμένες ρυθμίσεις widget. $defaults = array("title" => __("Example", "example"), "name" => __("Bilal Shaheen", "example"), "show_info" => true); $instance = wp_parse_args((array) $instance, $defaults); ?>

Τώρα θα δημιουργήσουμε πεδίο εισαγωγής κειμένου. Θα τυλίξουμε αυτές τις τιμές σε μια ετικέτα παραγράφου.

// Widget Title: Εισαγωγή κειμένου

" name="get_field_name("τίτλος"); ?>" value="" style="width:100%;" />

//Εισαγωγή κειμένου

" name="get_field_name("όνομα"); ?>" value="" style="width:100%;" />

// Πλαίσιο ελέγχου

id="get_field_id("show_info"); ?>" name="get_field_name("show_info"); ?>" />

συμπέρασμα

Εντάξει όλα τελείωσαν τώρα. Μόλις φτιάξατε μόνοι σας ένα χαριτωμένο και απλό widget που εμφανίζει το όνομα του συγγραφέα του ιστολογίου. Επιπλέον, επιτρέπει στον χρήστη να επιλέξει αν θα εμφανίσει τις πληροφορίες στο κοινό ή όχι. Αποθηκεύστε τον κωδικό μέσα αρχείο PHPκαι ανεβάστε το στο φάκελο θέματός σας. Καλέστε τον στο δικό σας λειτουργίες.php. Μετά από αυτό, μεταβείτε στην κονσόλα Εμφάνιση → Widgetsκαι θα δείτε το widget σας.

Όλος αυτός ο κώδικας περιλαμβάνεται στο αρχείο που επισυνάπτεται στο άρθρο, καθιστώντας ακόμα πιο εύκολη την αντιγραφή και επικόλληση. Απολαμβάνω!