In diesem Artikel erfahren Sie, wie Sie in Ihrer Flex-Anwendung Deep Linking einrichten, das sowohl Endbenutzern als auch Suchmaschinen angezeigt wird.
Es ist ein Tutorial, das sich hauptsächlich an alle anderen Überlebenden richtet, die weder die Zeit noch die Energie haben, wirklich zu lernen, wie man eine Proxy-Klasse für SWFAddress erstellt, und höchstwahrscheinlich keine Programmierer sind.
Werfen wir einen Blick auf das Endergebnis, auf das wir hinarbeiten, und wie die Browserleiste den Titel der Seite wiedergibt, Anfang:
Laden Sie die Quelldateien herunter und verwenden Sie sie als Referenz, während Sie dieses Tutorial lesen.
Dies ist mein erstes Flex-Tutorial, und ich kann nur schreiben, nachdem ich die folgende Einschränkung angesprochen habe: Ich bin eigentlich nur ein Cut-and-Paste-Codierer, obwohl einer mit fast 10 Jahren AS1, AS2 und nun auch AS3-Erfahrung, die gegeben hat Mir ein ziemlich guter Komfort damit. Ich schreibe ein paar Funktionen, If-Statements, Vars und solche Dinge - aber ich bin mehr ein Hackmeister als alles andere, was manchmal zu kreativer Codierung führt, während andere Male zu Zeitverschwendung bei Dingen führen, die ich nicht habe Lesen Sie genug darüber, bevor Sie mit experimentieren!
Beim Deep Linking geht es um viel mehr als nur um SEO. es geht um benutzbarkeit. Ich denke viel mehr über die Benutzerfreundlichkeit nach dem Bau einer E-Learning-App nach. Jetzt stelle ich fest, dass eine Flex- oder Flash-App Sie durch Drücken der Zurück-Taste vollständig aus der App zurückzieht, und denke darüber nach, dass meine Benutzer diesen Ärger nicht empfinden sollen. Wer möchte alle Ihre Lektionen durchblättern und nach der Aktivität suchen, die er noch einmal machen möchte, oder eine E-Mail an seinen Freund senden?
Beim Deep Linking geht es um viel mehr als nur um SEO. es geht um benutzbarkeit.
Dies ist ein Tutorial, das sich vor allem an alle anderen Überlebenden richtet, die keine Zeit und Energie haben, um wirklich zu lernen, wie man eine Proxy-Klasse für SWFAddress erstellt, und höchstwahrscheinlich keine Programmierer sind. Ich kann zwar einige Tutorials von der SWFAddress-Site zu schätzen wissen, die viele technische Minutien enthalten, warum Sie die Dinge richtig machen müssen und wie schlechte Praktiken Ihre App zerstören usw. - manchmal braucht eine Person nur einen Weg, um Dinge zu machen arbeiten auf eine Weise, die sie verstehen können. Einige dieser Artikel lassen Sie vermuten, dass Sie möglicherweise keine Deep-Linking-Funktion erhalten, wenn Sie selbst keine Unmengen von Code schreiben können.
Der Grund, warum ich meine Codierungserfahrung dazu teilen möchte, ist, dass ich SWFAddress, Datagrid und Flex ohne Erfolg gegoogelt habe. Ich habe keine direkten Beispiele für jemanden gefunden, der SWFAddress verwendet, um dynamische URLs aus seinem Datagrid in seiner Flex-App zu erstellen. Mein Mann witzelte, dass dies so offensichtlich ist, weil es so offensichtlich ist, dass sich niemand die Mühe gemacht hat, darüber zu bloggen. Da Sie jedoch Flex-Beispiele, Tutorials und Code für fast jedes grundlegende Codierungsproblem finden können, bezweifle ich das sehr. Also los geht's!
Sie benötigen die folgenden Elemente, um dieses Lernprogramm abzuschließen:
Sie können auch das Dateipaket für dieses Lernprogramm herunterladen, das eine Schlüsseldatei mit den ActionScript-Beispielen von unten enthält: RoutingEvents.as.
Da ich mich auf das Datagrid und SEO für dieses Tutorial konzentriere; Ich gehe davon aus, dass Sie bereits wissen, wie Sie die URL-Ansichten für SWFAddress erstellen. Wenn Sie dies nicht tun, können Sie den Code zum Erstellen der URL-Ansichten in sehen RoutingEvents.as Datei für dieses Tutorial enthalten, um zu sehen, wie ich es gemacht habe.
Ich wusste von Anfang an, dass ich meine Seiten-URLs an eine im XML vorhandene Variable binden musste, die mein Datagrid auffüllt. Es ist einfach, diese Variable in die URL zu schreiben. Ich habe eine Variation aus dem Attribut erstellt, das ich aus XML für meine Seiten-URLs verwenden wollte:
[Bindbar] privater var-Slug: String
So großartig, dass ich die URLs für meine Datagrid-Elemente schnell festlegen konnte, was sofort dazu führte, dass meine Klicks auf Datagrid tatsächlich die URL in meinem Browser ändern.
Deep Linking besteht natürlich aus zwei Dingen: dem Browser mitzuteilen, was er sehen soll, und dem Browser mitzuteilen, was die IT wünscht. Der zweite Teil erwies sich als viel schwieriger.
Was ich nach Tagen des Bastelns endlich verstanden habe, war, dass wenn Sie direkt von Ihrem Browser aus zu einer URL in Ihrer App navigieren, Ihre App keine Ahnung hat, welche Daten angezeigt werden sollen. Ihre App weiß nur, was Sie über die URL kommunizieren, und welche Regeln Sie als Regeln festgelegt haben, wenn bestimmte Werte in dieser URL gefunden werden. Wenn Sie also mehr als eine Datenquellen- oder XML-Datei haben, wie dies bei den meisten recht komplizierten Apps der Fall ist, müssen Sie Bedingungen für die Darstellung der genauen Daten festlegen, die die URL enthalten muss, damit die Ansicht, die die URL enthält, erfolgreich bereitgestellt werden kann anfragen.
Zuerst dachte ich das naiv, indem ich das einfach benutzte Schnecke
var Ich könnte SWFAddress anweisen, nach diesem Wert zu suchen, und dann zur Indexnummer des entsprechenden Eintrags im Datagrid gehen. Das Einrichten und das korrekte Passieren der Variablen zum richtigen Zeitpunkt - geschah jedoch erst nach ausgiebigem Ausprobieren. Tonnen von Alert.show (slug) und anderen Alerts, um zu sehen, was zu welcher Zeit tatsächlich übergeben wurde, und ein großartiger Code, den ich online gefunden habe, um eine Datagrid-Zeile mit einem bestimmten Wert abzugleichen, dann zum Index blättern, um die Wert.
Ich stimme einem der komplizierteren Artikel / Tutorials zu, die auf der SWFAddress-Website zu finden sind: Sie müssen Ihre Variablen sehr sorgfältig auswählen, wenn Sie sie mit SWFAddress verwenden. Stellen Sie sicher, dass sie einige gute Informationen enthalten - Informationen, die Sie in Dinge wie Seitentitel und eindeutige Bezeichner für ein Datagrid oder Listenelement einlesen können. Meine activityId
Die Variable aus meinem XML erwies sich als perfekte Variable, da alle Aktivitäts-IDs für eine gegebene Lektion wie folgt lauten:
Einige Beispielaktivitäts-IDs:
Diese Informationen verwenden jetzt SWFAddress, um zur richtigen Lektion sowie zu einzelnen Aktivitäten zu navigieren.
Für andere Dinge wie Abschnitte können Sie diese mit SWFAddress als Setter / Getter einrichten (ich verwende diesen Begriff locker, da ich ehrlich gesagt bin, ich bin nicht sicher, ob dies der technischen Definition eines Setters / Getters entspricht! [Ed: Sie können finden raus mit diesem Tutorial;)]) - in meinem Fall setze ich die Variable, die aufgerufen wird Sektion
Wenn ein Benutzer auf einen Datagrid-Eintrag in diesem Abschnitt klickt oder zu einem neuen Abschnitt navigiert, erhalte ich diesen Wert wieder aus der URL, wenn jemand zu diesem Abschnitt navigiert. In meinem Fall sind meine Hauptabschnitte:
Diese Abschnitte befinden sich in meinem handleSWFAddress ()
Funktion:
private Funktion handleSWFAddress (Ereignis: SWFAddressEvent): void case "/ childrens": section = "childrens" break;
Dann passiere ich in meinem Klickereignis für das Datagrid das Sektion
und Schnecke
Variablen als URL:
selectedRow = Row (myD slug = selectedRow.activityId; SWFAddress.setValue ("/" + section + "/" + "slug);
Das Einstellen des Titels war etwas komplizierter, da ich den Lektionstitel verwenden wollte, der eigentlich kein Teil des reduzierten XML ist, das ich für diese Demo-App verwende. Daher habe ich ein Attribut hinzugefügt, das nur in der ersten Anwendung vorhanden sein muss Zeile meines XML, um den Lektionstitel festzulegen.
Hier ist der Code aus meinem Datagrid-Click-Ereignis, der dies ermöglicht:
SWFAddress.setTitle (myDG.dataProvider.getItemAt (0) .title + "Spanish Lesson -" + selectedRow.lessonTitle);
Das getItemAt (0) ist eine nette kleine Funktion, die es mir erlaubte, einen Titel für den Browser nur in der ersten Zeile jeder XML-Datei zu setzen, wodurch die Seiten eine bessere Beschreibung erhalten. Jetzt anstelle meiner Lektionsaktivitäten-Seiten:
Vokabeltätigkeit
Sie lesen:
Derzeitige Verben Spanischstunde - Vokabeltätigkeit
Das funktioniert da getItemAt (0)
Ruft den ersten Knoten aus der XML-Datei ab.
Um Ihre zu benutzen Schnecke
Wert effektiv, müssen Sie es aus Ihrer URL extrahieren. So fand ich endlich heraus, dass ich eine brauchte Neu Variable, die ich anrufe slugAdd
. Ich verwende das in meinem SWFAddress-Handler:
private Funktion handleSWFAddress (Ereignis: SWFAddressEvent): void var path: String = SWFAddress.getPath (); var slugAdd: String = SWFAddress.getPath (); slugAdd = slugAdd.replace (/ \ / childrens \ // g, ""); slugAdd = slugAdd.replace (/ \ / Anfang \ // g, ""); slugAdd = slugAdd.replace (/ \ / intermediär \ // g, ""); slugAdd = slugAdd.replace (/ \ / newsletter \ // g, ""); //Alert.show (slugAdd)
Dieses String-Parsing ist hier so einfach - aber es muss exakt sein, damit es funktioniert! Ihre slugAdd
muss identisch mit Ihrem Slug-Wert sein, damit Ihre DataGrid-Übereinstimmungsfunktion funktioniert und Ihre URLs Sie in die richtige Zeile bringen. Schauen wir uns also etwas näher um - wir machen einen einfachen String-Ersatz. Sie nehmen eine URL wie:
http://www.myapp.com/main.html#/childrens/present_verbsvocab
Und nachdem du es getan hast
slugAdd = slugAdd.replace (/ \ / childrens \ // g, "")
Wenn Sie das ausführen Alert.show (slugAdd) - Sie erhalten
present_verbsvocab
(Ich bin mir bewusst, dass meine Verwendung des Unterstrichs in meinem Slug-Wert keine bewährten Methoden für Namenskonventionen für URLs ist, die die Verwendung von .s erfordern Strich stattdessen - aber wir haben über 1000 Lektionen in unserer Haupt-App, die diese verwenden, also bleibe ich dabei.).
Die Sache, an die man sich bei der ersetzen() Funktion in AS3 ist, dass Ihr String-Wert zwischen Schrägstrichen enthalten sein muss -
slugAdd.replace (/ childrens / g, "myReplacementText");
? und wenn Sie auch einen Schrägstrich selbst ersetzen möchten, müssen Sie diese Zeichen mit einem Schrägstrich vor dem Escape entfernen. So landest du mit
slugAdd = slugAdd.replace (/ \ / childrens \ // g, "")
Das G Teil sagt ihm, dass er das ersetzen soll alles Zeichen und nicht nur der erste und der "" ist für Ihren Ersatz, der in meinem Fall überhaupt keinen Wert hatte. Weitere Informationen finden Sie in den LiveDocs zu String.replace () und RegExp.
Dies scheint jetzt so einfach zu sein, aber es dauerte eine Menge Google-Suche, bis ich herausfand, dass ich keine langen, komplizierten Funktionen verwenden musste, nur um einige Werte aus einem String herauszulösen. Caramba Ich wünschte, ich hätte ein Tutorial wie dieses gefunden, bevor ich angefangen habe :) Okay, jetzt haben wir unseren Slug oder die URL, die wir aus der XML-Datei des Datagrids bekommen, als neue Variable weitergegeben slugAdd
. Aber wir müssen immer noch tun etwas mit dieser Variable.
Grundsätzlich gibt es drei grundlegende Funktionen, die dazu führen, dass meine SWFAddress-Funktion für das tiefe Verknüpfen funktioniert.
Funktion eins: handleSWFAddress ()
handleSWFAddress (Ereignis: SWFAddressEvent): void
Dein Arbeitstier für alle Navigationssachen. Es scheint wichtig zu sein, es als Ereignis zu haben, denn ich habe zuerst ein anderes Online-Beispiel verwendet, das diese Unterscheidung nicht verwendet hat, und dies funktioniert definitiv besser.
Funktion zwei: getSelectedItem ()
getSelectedItem (): void
Dies muss aufgerufen werden nach dem Die Daten sind bereits gefüllt oder in Ihrem Ergebnishandler für Ihren Datenanruf. Timing ist sehr Hier ist das wichtig, oder Ihre Artikel werden nicht geladen, wenn Benutzer die URL direkt im Browser eingeben und nicht durch Ihre App klicken! Diese Funktion vergleicht eine eingehende URL mit einem bestimmten Element aus einem Datenraster.
Funktion Drei: itemfromAddress ()
itemfromAddress (): ungültig
Das ist was eigentlich tut etwas mit dem Datagrid-Eintrag - Replizieren meines Datagrid-Click-Handlers in einem Non Veranstaltung Funktion, da Sie keine ereignisbasierte Funktion von einer anderen Funktion aus aufrufen können.
Nehmen wir diese in der Reihenfolge auf, wie sie verwendet werden, wenn jemand eine URL in den Browser eingibt und nach Daten aus Ihrer App sucht. Da sich dieses Tutorial auf das Navigieren in Ihrem Datagrid konzentriert, schreibe ich dieses Beispiel in meinem handleSWFAddress () obwohl Sie den Rest sehen können, wenn Sie sich das ansehen RoutingEvents.as Datei, die im Download für dieses Lernprogramm enthalten ist.
case "/ childrens /" + slugAdd:
Bei diesem Code handelt es sich um den Google Analytics-Code, den Sie direkt neben SWFAddress hinzufügen können.
tracker.trackPageview ("/ childrens /" + slugAdd);
Diese if-Anweisung prüft, ob die myURL
Variable, die mein füttert HTTPService Datenanruf ist das, was wir für diesen Abschnitt benötigen. Wenn diese Variable noch nicht festgelegt ist, liegt dies höchstwahrscheinlich daran, dass der Benutzer über eine URL navigiert und die App noch nicht geladen wurde. Daher müssen wir der App mitteilen, welche Daten diese URL sind erwartet zu sehen. Wir möchten nicht, dass die Daten des dataProviders entfernt werden, wenn der Benutzer bereits in der App ist und durch das Datagrid navigiert. Aus diesem Grund benötigen wir die ob Aussage. Nur für den Fall, dass sie sich in unserer App mit anderen Daten an einem anderen Ort befanden, und navigieren Sie über eine URL zu dieser Ansicht. Wir müssen diese Daten speichern, das Datenraster aktualisieren und die Daten erneut senden HTTPService Datenanruf - Andernfalls erhalten wir zusätzliche Daten in unserem Datagrid, durch die unser Abgleich beeinträchtigt wird Schnecke
Variablen mit slugAdd
Variablen.
if (myUrl! = 'data / childrens_updown.xml') myUrl = 'data / childrens_updown.xml' invalidateDisplayList (); lessonsDataProvider.removeAll () lessonsDataProvider.refresh () httpService.send (); myDG.dataProvider = lessonsDataProvider; myDG.validateNow () //Alert.show("Ich habe Daten in "+ myUrl) geändert"
Wenn der Benutzer über eine URL eingibt - hat er das bereits ausgeführt getSelectedItem () Funktion am Ende ihres Datenanrufs. Wenn diese Daten jedoch bereits geladen sind und sie weiterhin versuchen, über den Browser zu navigieren, anstatt auf das Datagrid zu klicken, müssen sie diese Browser-URL mit der Aktivität abgleichen, die der Browser erwartet, sodass wir diese Funktion aufrufen müssen In diesem Fall:
getSelectedItem () currentState = "class1State"
Wir setzen unsere Sektion
Variable hier, um sicherzustellen, dass, wenn ein Benutzer durch die App klickt, die richtige Sektion
wird der URL hinzugefügt,
Abschnitt = "Kinder" Pause;
Schauen wir uns den Code also noch einmal zusammen an:
case "/ childrens /" + slugAdd: tracker.trackPageview ("/ childrens /" + slugAdd); if (myUrl! = 'data / childrens_updown.xml') myUrl = 'data / childrens_updown.xml' invalidateDisplayList (); lessonsDataProvider.removeAll () lessonsDataProvider.refresh () httpService.send (); myDG.dataProvider = lessonsDataProvider; myDG.validateNow () getSelectedItem () currentState = "class1State" section = "childrens" break;
Schauen wir uns nun das Stück Schönheit an, durch das das Ganze wirklich funktioniert hat. Ich habe dies aus einem Code geändert, den Anuj Gakhar in seinem Blogeintrag Flex geschrieben hat: So wählen Sie ein Element in DataGrid vorab aus:
private Funktion getSelectedItem (): void //Alert.show ("Ich mache ein getSelectedItem") var slugAdd: String = SWFAddress.getPath (); slugAdd = slugAdd.replace (/ \ / childrens \ // g, ""); slugAdd = slugAdd.replace (/ \ / Anfang \ // g, ""); slugAdd = slugAdd.replace (/ \ / intermediär \ // g, ""); slugAdd = slugAdd.replace (/ \ / newsletter \ // g, ""); //Alert.show (slugAdd) //Alert.show (myDG.dataProvider.length + "dataProvider length") var gData: Object = myDG.dataProvider; if (slugAdd) for (var i: int = 0; i < myDG.dataProvider.length; i++) if (myDG.dataProvider[i].activityId == slugAdd) myDG.selectedItem = myDG.dataProvider[i]; //Alert.show (myDG.selectedItem.activityId + " " + slugAdd + " index = " + myDG.selectedIndex) myDG.validateNow(); myDG.scrollToIndex(i); itemfromAddress()
Diese Alerts haben mir wirklich geholfen, da ich ursprünglich diesen Code an der Spitze meiner hatte handleSWFAddress () Funktion, die nicht funktioniert hat. Diese Funktion musste am Ende des result-Handlers meines dataProviders aufgerufen werden, der wiederum von meinen Switches aufgerufen werden musste, die den slugAdd
Variable, die von SWFAddress erfasst wird. Ansonsten sind die Daten noch nicht da und Ihre getSelectedItem () findet keine Elemente, die mit dem erfassten URL-Wert übereinstimmen.
Und schließlich die Funktion, die meine SWFAddress-Verwaltung mit Ereignissen verbindet, die das verändern, was der Benutzer sieht: itemfromAddress (). Dadurch wird die in meinem SWFLoader angezeigte SWF-Lektion geändert, genauso wie wenn ein Benutzer auf eine andere Zeile im Datagrid geklickt hätte.
private Funktion itemfromAddress (): void swfLoader.unloadAndStop (); SoundMixer.stopAll (); selectedRow = Zeile (myDG.selectedItem); swfLoader.source = selectedRow.fileName;
Ich bin auf ein anderes Problem gestoßen: In meinem Fall habe ich festgestellt, dass das Laden von Daten in mein Hauptdatagrid nach dem Init der App Probleme beim Wechseln dieser Daten verursachen würde, wenn Benutzer versuchen, direkt über eine URL auf verschiedene Daten zuzugreifen. Die gleichen Daten, die beim Klicken durch die App einwandfrei geladen werden könnten, waren nicht verfügbar, wenn sie die gleiche URL direkt auf einer neuen Seite verwendeten, auf der die App noch nicht geladen war. Dies verursachte mir einen ganzen Tag der Trauer, während ich meinem Code noch eine Reihe von Alerts hinzufügte und versuchte herauszufinden, was das Problem beim Laden der Daten war.
Letztendlich musste ich für meinen dataProvider, der dynamisch ist, dieses Feld bei der Init der App leer lassen. Dies bedeutete, dass mein Startbildschirm von einem mit Daten zu einem ohne geändert wurde. Die andere Lösung könnte die Verwendung eines anderen dataProviders sein, aber ich entschied, dass ich das nicht tun musste, da ein statischer Bildschirm ohnehin besser auf dem Startbildschirm der App funktioniert.
Ich fand auch heraus, dass ich diese verwenden musste ob Anweisungen, um zu prüfen, ob der richtige dataProvider bereits geladen wurde oder nicht.
Während ich mich mit SWFAddress beschäftigte, musste ich mich noch einmal daran erinnern, dass der Browser keine Ahnung hat, welche Daten Sie laden möchten, es sei denn Sie Sag es Welche Daten sollten da sein? Allein Ihre Variable slugAdd
bedeutet nichts. Sobald Sie diesen Wert erfasst haben und die Variable in Ihr Spiel einfügen handleSWFAddress () Wenn Sie diese Funktion verwenden, können Sie sie problemlos mit Ihrem Datagrid-Index abgleichen und so etwas wie Ihre Klickfunktion für Ihr Datagrid ausführen.
Außerdem musste ich verhindern, dass meine Daten zweimal im DataGrid angezeigt werden. Dies kann ein Problem sein, wenn Sie dieselben Daten senden HTTPService Anfrage in verschiedenen Teilen Ihrer App. Ich habe festgestellt, dass dies gut funktioniert, um zu verhindern, dass Datagrids das XML aus der vorherigen Datenanforderung entfernen.
lessonsDataProvider.removeAll () lessonsDataProvider.refresh () httpService.send (); myDG.dataProvider = lessonsDataProvider; myDG.validateNow ()
Das tun alles entfernen() auf den lessonsDataProvider (den Namen meines HTTPService Anfragevariable) war der Schlüssel zum Entfernen doppelter XML-Einträge. Ich bin mir zwar nicht sicher, ob Sie das weiter machen müssen httpService.send () jedes Mal, wenn Sie einen bestimmten Datensatz direkt von einer URL aus laden möchten, anstatt nur in der drin() von der App, so zu tun funktioniert, also bin ich dabei geblieben. Ich habe jedoch zwei Datenanfragen in verschiedenen Teilen der App (LessDataProvider und LessDataProvider6), die von meiner lächerlichen SIX übrig geblieben sind HTTPService Anfragen, mit denen ich angefangen habe :) - wenn Sie also nur eine Datenanfrage haben, ist dies möglicherweise nicht erforderlich (im anderen Teil meiner App, httpService6.send () ist notwendig).
Nun musste ich mich für die etwas anstrengende Zusatzarbeit verhalten, um meine App SEO-freundlich zu gestalten. An und für sich bietet SWFAddress einen exakten SEO-Vorteil. Ihre Seiten werden nicht bei Google, Yahoo oder anderen Suchmaschinen angezeigt. Nein und Wenn, oder Aber. Warum das? Denn das gesamte Deep-Linking-Schema von SWFAddress hängt von diesen "Hash" -Fragment-Dingen ab - dem Nummernzeichen #, das in jeder von SWFAddress erstellten Seite verwendet wird. Und Google ignoriert alles hinter diesem Symbol, sodass der Roboter nie etwas anderes als Ihre Hauptseite sehen kann. Egal wie viele URLs Sie haben.
Und das SEO-Beispiel der SWFAddress-Leute macht es nicht gerade intuitiv, es mit Ihren eigenen Daten zu replizieren. Die Idee, dass Sie Ihre Site in HTML neu erstellen müssen, um sich unter Ihrer anderen Site zu verstecken - ist eigentlich nur eine Option für Personen, die über eine Flash-Website verfügen. Für jeden, der eine ernstzunehmende Flex-App und keine Puff-Website hat, ist das ein Witz. Wie genau soll eine alternative Site erstellt werden, wenn alles auf SWF-Aktivitäten basiert, die von XML gespeist werden?
Aber ich habe herausgefunden, dass ich wirklich nichts anderes als einen Link, einen Titel und eine Beschreibung erstellen muss, die nur eine andere Version desselben Titels ist, und indem ich eine Kalkulationstabelle verwende, mit der ich alle meine erstellte Ich könnte die Unterrichtseinheiten trotzdem einfach ausschneiden und die entsprechenden Werte für meine Flex-App-URLs einfügen.
Die Dateien, die ich für meine eigene Implementierung von SEO für SWFAddress verwendet habe, wurden aus dem Paket auf pokd.org geändert. Das Tutorial zur Verwendung dieser Dateien ist kurz, unkompliziert und leicht zu folgen. Das Tutorial finden Sie hier. Die SEO-Version von Asual.com hat für mich überhaupt nicht funktioniert, und ich habe festgestellt, dass andere Leute sich darüber beschweren. Verschwenden Sie keine Zeit: Laden Sie die Version von pokd.org herunter oder verwenden Sie die Dateien, die im Download-Paket für dieses Lernprogramm enthalten sind. Ich habe meine eigenen Dateien etwas abgeschnitten, um nur meine ersten beiden Abschnitte anzuzeigen: Kinder und Anfang, um das Lesen der Dateien zu erleichtern.
Sie müssen Javascript ausschalten in Ihrem Browser, um die Nicht-Flex / Flash-Version Ihrer Website zu testen! Das und den Überlauf der Hauptabteilung sichtbar machen. Wenn Sie nicht über eine 5- oder 10-seitige Website verfügen, ist das Ausblenden des Überlaufs das Testen unmöglich. Die zusätzlichen SEO-Dateien, die Sie verwenden werden, bestehen aus 2 PHP-Dateien, 1 .htaccess-Datei und 1 zusätzlichen Javascript-Datei, die in Ihrer gespeichert werden muss / swfaddress Ordner in Ihrem Flex / bin-release Mappe).
Öffnen Sie Ihre Tabellenkalkulationsanwendung und öffnen Sie die Datei mit dem Titel swfaddress_seo_index.ods oder .xls das finden Sie im Download-Paket für dieses Tutorial. Passen Sie sie an Ihre eigenen Bedürfnisse an. In dieser Tabelle habe ich die Werte für meine Anwendungs-URL, die Abschnitte und die Werte eingegeben Schnecke
Adressen, um alle für den Server benötigten swf_link [a hrefs] zu erstellen index.php Datei (Sie benötigen zu jedem Link Ihre vollständige "gereinigte" URL ohne die main.html #
sowie Ihren Seitentitel). Schneiden Sie aus Ihrer Tabellenkalkulations-App aus und fügen Sie sie in Notepad ++ oder dem von Ihnen verwendeten Textcode-Editor ein. Stellen Sie sicher, dass Sie keine unnötigen Tabs oder Leerzeichen haben und dass alles beim Einfügen in Ihre PHP-Datei korrekt aussieht.
Meine neuen vollständigen URLs sehen im Browser folgendermaßen aus: Beachten Sie, dass das Hash-Symbol (#) jetzt weg ist:
http://www.instaspanish.com/dev/demo/childrens/up_downvocab
Da ich über 70 Seiten habe, habe ich mich nur dafür entschieden, die Abschnitte auf der index.php Seite. Die anderen Demos, die ich gesehen habe, umfassen alle Seiten der Website, aber dies sind kleine Websites. Einen Link zu jeder Seite Ihrer index.php bedeutet, dass jedes Mal, wenn der Google-Bot eine einzelne Seite besucht, alle diese Links angezeigt werden. Das ist eine schlechte Idee. Legen Sie also nur Ihre Hauptseiten in die index.php Seite und lassen Sie die datasource.php kümmere dich um den Rest.
Schauen Sie sich die Tabelle mit dem Titel an swfaddress_seo_datasource.ods oder .xls in den Dateien für dieses Projekt. Dieses Beispiel zeigt, wie ich Werte aus meiner Datenbank ausschneide und eingefügt habe, um die switch-Anweisungen aufzufüllen. Nachdem Sie diese Tabelle mit Ihren eigenen Werten ausgefüllt haben, können Sie mit einem Code-Editor wie Notepad ++ alle zusätzlichen Tabulatoren entfernen und die korrekte Formatierung überprüfen, bevor Sie sie in Ihre PHP-Datei einfügen.
Die switch-Anweisungen sind ziemlich unkompliziert, obwohl ich in meinem Fall auch den Inhalt jeder XML-Datei einschließen wollte, die meine Bildungsaktivitäten füttert, um diese Schlüsselwörter in jeder von den Suchmaschinen angezeigten Datei zu verwenden. Die Beispiele, die ich gesehen habe, haben alle davon ausgegangen, dass sich jemand zusammensetzt und für jede Datei eindeutige Seitenbeschreibungen erstellt datasource.php Datei, aber das ist eine äußerst zeitraubende Option für jemanden mit Dutzenden oder Hunderten von Datagrid-Einträgen in seiner Flex-Site. Also habe ich eine neue content.php-Seite erstellt, die je nach Aktivität der URL eine andere Seitenbeschreibung verwendet. Außerdem füge ich den Ausdruck aus der XML-Datei für jede Seite an, der auch eine XML-Datei zugeordnet ist.
Fall '/ Anfang': Echo ('Dieser Abschnitt ist für Personen ab 10 Jahren gedacht, die in einem 18-wöchigen Spanischkurs mit den Grundlagen beginnen möchten. Einige Highlights: Aussprache und Akzente Verben und Zeitformen, die anfangen, spanische Arbeitsblätter und Quiz zu sprechen. Insta Spanish eLearning Demo Beginn der Spanischstunde.
'); brechen; case '/ childrens / up_downvocab': echo ('Spanischunterricht für Kinder - Auf und Ab - Liste der Vokabeln
'); $ xml_file = 'http://www.instaspanish.com/dev/activities/assets/lessons/up_down/xml/hover_word_list.xml'; givemeText (); outputXML (); brechen;
Die .htaccess-Datei muss basierend auf dem Basisordner für Ihr spezielles Server-Setup angepasst werden. Zum Beispiel mein XAMPP-Testordner in / htdocs wird genannt instademo, mein .htaccess hat also diese Zeile für die RewriteBase:
RewriteBase / instademo
Die Flex-Anwendung auf meinem Live-Server ist auch in einem Unterordner und nicht in meinem Basisordner enthalten. Die Zeile oben zeigt in diesem Fall auf diesen Ordner. Beachten Sie, dass es aber mit einem Schrägstrich beginnt nicht einen nachgestellten Schrägstrich haben.
Starten Sie XAMPP oder was auch immer Sie für Ihr lokales Apache / PHP-Setup verwenden, und platzieren Sie Ihre PHP-, .htaccess-, Javascript- und Flex-Implementierungsdateien in einem Unterordner von / htdocs Ordner oder was auch immer Ihr Setup als Ordner für Webdateien verwendet. Wenn Sie die SEO-Site testen möchten, müssen Sie dies tun Javascript ausschalten. Dies ist die Version, die Suchmaschinen-Bots sehen werden, sowie alle Web-Besucher, die kein Javascript oder Flash aktiviert haben. Stellen Sie sicher, dass Sie keine PHP-Fehler sehen und Ihre Links korrekt funktionieren.
Die Sitemap ist am einfachsten zu erstellen. Nehmen Sie die swfaddress_link
Werte von Ihrem swfaddress_seo_index.ods oder .xls Kalkulationstabelle. Fügen Sie alle in Notepad ++ oder in Ihren Code-Editor ein, führen Sie eine Suche und ein Ersetzen aus, um Leerzeichen oder Tabulatoren zu entfernen, und fügen Sie dann Ihre vollständige URL