Acest articol vă arată cum să configurați corelarea profundă în aplicația dvs. Flex care poate fi văzută de utilizatorii finali, precum și de motoarele de căutare.
Este un tutorial în principal pentru toate celelalte tăietori și pasteri acolo, care nu au timp sau energie să învețe cu adevărat cum să creeze o clasă proxy pentru utilizarea cu SWFAdress și cel mai probabil nu sunt programatori prin comerț.
Să aruncăm o privire asupra rezultatului final la care vom lucra și să observăm cum bara de browser reflectă titlul paginii, Început:
Descărcați fișierele Sursă și le folosiți ca referință în timp ce citiți acest tutorial.
Acesta este primul meu tutorial Flex și unul pe care îl pot scrie doar după ce am afirmat următoarea mențiune: Sunt într-adevăr un coder cut-and-paste, deși unul cu aproape 10 ani de experiență AS1, AS2 și acum AS3, care a dat mi un nivel de confort destul de bun cu el. Eu scriu câteva funcții, dacă-declarații, vars și lucruri de genul ăsta - dar eu sunt mai mult un hackmeister decât orice, ceea ce uneori duce la codificare creativă, în timp ce alteori duce la pierderea timpului pe lucruri pe care nu le-am citiți destul despre înainte de a experimenta!
Legătura profundă este mai mult decât SEO; este vorba despre uzabilitate. Cred că mai mult despre utilitate după ce am construit o aplicație de e-learning. Acum văd când o aplicație Flex sau Flash vă împiedică complet să părăsiți aplicația atunci când apăsați butonul din spate și gândiți-vă cum nu vreau ca utilizatorii mei să experimenteze acel disconfort. Cine vrea să parcurgă toate lecțiile dvs. în căutarea unei activități pe care doresc să o facă din nou sau să le trimită prin e-mail prietenului lor?
Legătura profundă este mai mult decât SEO; este vorba despre uzabilitate.
Acesta este un tutorial în principal pentru toate celelalte tăietori și pasteri acolo, care nu au timp sau energie pentru a învăța cu adevărat cum să creeze o clasă proxy pentru utilizarea cu SWFAdress și cel mai probabil nu sunt programatori prin comerț. În timp ce pot aprecia unele dintre tutorialele site-ului SWFAdress care oferă o mulțime de detalii tehnice despre motivul pentru care trebuie să faceți lucrurile în mod corespunzător și despre modul în care practicile rele vă vor sparge aplicația etc. - câteodată o persoană are nevoie doar de o modalitate de a face lucrurile lucrează într-un mod pe care îl pot înțelege. Unele dintre aceste articole vă fac să credeți că nu puteți obține o legătură profundă de lucru dacă nu puteți scrie oodle de cod însuți.
Motivul pentru care am de gând să împărtășesc experiența mea de codificare pe acest lucru este pentru că am googled heck din SWFAddress, Datagrid, și Flex, fără nici un folos. Nu am găsit exemple directe de cineva care utilizează SWFAdress pentru a crea adrese URL dinamice din datagridul lor în cadrul aplicației Flex. Soțul meu a glumit că trebuie să fie pentru că este atât de evident că nimeni nu a deranjat să facă blog, dar după cum puteți găsi exemple Flex, tutoriale și cod pentru aproape fiecare problemă de codare de bază, Deci aici te duci!
Veți avea nevoie de următoarele elemente pentru a finaliza acest tutorial:
De asemenea, puteți descărca pachetul de fișiere pentru acest tutorial, care include un fișier cheie care conține exemplele actionscript de mai jos: RoutingEvents.as.
Deoarece mă concentrez asupra datagrid și SEO pentru acest tutorial; Presupun că deja știți cum să creați vizualizările de adresă URL pentru adresa SWFA. Dacă nu, puteți vedea codul pentru crearea vizionărilor adreselor URL din RoutingEvents.as fișier inclus pentru acest tutorial pentru a vedea cum am făcut-o.
Am știut de pe lilieci că am nevoie pentru a lega URL-urile paginii mele la o variabilă prezentă în XML-ul care popula populația mea. Obținerea acestei variabile pentru a scrie la adresa URL este ușor. Am creat un var din atributul pe care l-am vrut să îl folosesc din XML pentru adresele URL ale paginii mele:
[Obligatoriu] privat var slug: String
Atât de grozav, am putut seta rapid adresele URL pentru elementele mele de agendă, ceea ce a dus imediat la o experiență plăcută de a vedea că clicurile mele de tip datagrid modifică adresa URL în browserul meu.
Dar, desigur, legarea profundă constă în două lucruri: spune browser-ului dvs. ce doriți să vedeți și browser-ul dvs. vă spune aplicației ce vrea să vadă. A doua parte sa dovedit a fi mult mai dificilă.
Ceea ce mi-am adus în sfârșit creierul după zile de tinkering, a fost atunci când navigați la o adresă URL din aplicația dvs. direct din browserul dvs. - aplicația dvs. nu are nicio idee asupra datelor pe care doriți să le afișați. Aplicația dvs. cunoaște doar ceea ce comunicați prin adresa URL și ceea ce ați configurat ca reguli de urmat dacă anumite valori se găsesc în respectiva adresă URL. Deci, dacă aveți mai multe surse de date sau fișier xml, deoarece cele mai multe aplicații destul de complicate - trebuie să creați condiții pentru prezentarea exactă a datelor pe care trebuie să le prezinte URL-ul pentru a servi cu succes vizualizarea URL-ului respectiv solicitând.
La început m-am gândit naiv că folosind doar asta melc
var aș putea spune SWFAddress să caute acea valoare, apoi du-te la numărul de index al intrării corespunzătoare în datagrid. Dar stabilirea acestui lucru și obținerea corectă a variabilei la momentul potrivit - s-au produs numai după încercări și erori extinse; tone de Alert.show (slug) și alte Alerte pentru a vedea ce trebuia să treacă de fapt la acel moment și un cod excelent pe care l-am găsit online pentru a potrivi un rând datagrid cu o anumită valoare, apoi derulați până la index pentru a afișa valoare.
Sunt de acord cu unul dintre articolele / tutorialele mai complicate găsite pe site-ul web SWFAdress: trebuie să alegeți variabilele foarte atent când le folosiți cu SWFAdress. Asigurați-vă că acestea conțin informații bune - informații pe care le puteți analiza în lucruri precum titluri de pagini și identificatori unici pentru un datagrid sau element de listă. Mele activityId
variabila din XML-ul meu sa dovedit a fi varful perfect, deoarece toate id-urile pentru o anumită lecție sunt:
Unele exemple de activitate:
Aceste informații sunt acum ce utilizează SWFAddress pentru a naviga la lecția corectă, precum și la activitatea individuală.
Pentru alte lucruri, cum ar fi secțiunile, le puteți seta pe cei care folosesc SWFAdress ca setter / getter (folosesc acest termen liber ca sincer nu sunt sigur dacă aceasta corespunde definiției tehnice a unui setter / getter! cu acest tutorial;)]) - în cazul meu am setat variabila numită secțiune
atunci când un utilizator face clic pe o intrare datagrid în acea secțiune sau navighează către o secțiune nouă, atunci obțin valoarea respectivă înapoi din adresa URL dacă cineva navighează către acea secțiune. În cazul meu, secțiunile mele principale sunt:
Aceste secțiuni sunt setate în secțiunea mea handleSWFAddress ()
funcţie:
funcția privată handleSWFAdress (eveniment: SWFAddressEvent): void case "/ childrens": section = "pauză pentru copii";
Apoi, în evenimentul meu de clic pentru datagrid, trec secțiune
și melc
variabile pe adresa URL:
selectRow = Row (myD slug = selectedRow.activityId; SWFAddress.setValue ("/" secțiunea + "/" + slug);
Stabilirea titlului a fost puțin mai complicată, pentru că am vrut să folosesc titlul de lecție care nu face parte, de fapt, din fragmentarea XML pe care o folosesc pentru această aplicație demo - așa că am adăugat un atribut care trebuie să fie prezent doar în prima rândul meu XML pentru a seta titlul lecției.
Iată codul din evenimentul de clicuri datagrid care face ca acest lucru să se întâmple:
SWFAddress.setTitle (myDG.dataProvider.getItemAt (0) .title + "Lecția spaniolă -" + selectRow.lessonTitle);
getItemAt (0) este o funcție minunată care mi-a permis să pun un titlu pentru browser doar în primul rând al fiecărui fișier XML, care oferă paginilor o descriere mai bună. Acum, în loc de lecția de activitate lectură pagini:
Activitatea de vocabular
Ei citesc:
Lecții spaniole - Activitate de vocabular
Acest lucru funcționează pentru că getItemAt (0)
preia primul nod din fișierul XML.
Pentru a vă folosi melc
valoare eficientă, trebuie să o extrageți din adresa URL. Așa că am înțeles în cele din urmă că am nevoie de o nou variabilă, pe care o numesc slugAdd
. Folosesc acest lucru în mânerul meu SWFAdress:
funcția privată handleSWFAdress (eveniment: SWFAddressEvent): void var path: String = SWFAddress.getPath (); var slugAdăugați: String = SWFAddress.getPath (); slugAdd = slugAdd.replace (/ \ / childrens \ / g, ""); slugAdd = slugAdd.replace (/ \ / început \ / g, ""); slugAdd = slugAdd.replace (/ \ / intermediar \ / g, ""); slugAdd = slugAdd.replace (/ \ / newsletter \ / g, ""); //Alert.show (slugAdd)
Această parsing de coarde este atât de simplu aici, dar trebuie să fie exact pentru a funcționa! Ta slugAdd
trebuie să fie identic cu valoarea dvs. de tip "slug", astfel încât funcția de potrivire a datagridului va funcționa și adresele dvs. URL vă vor conduce la rândul corect. Deci, căutăm un pic mai aproape - facem o înlocuire a unui șir simplu. Luați o adresă URL ca:
http://www.myapp.com/main.html#/childrens/present_verbsvocab
Și după ce o faci
slugAdd = slugAdd.replace (/ \ / childrens \ / g, "")
Dacă rulați Alert.show (slugAdd) - vei primi
present_verbsvocab
(Sunt conștient de faptul că utilizarea mea de subliniere în valoarea mea slug nu este cea mai bună practică pentru denumirea convențiilor pentru URL-uri, care cer că eu folosesc liniuță în schimb - dar avem peste 1000 de lecții în aplicația noastră principală care utilizează acest lucru, așa că rămân cu ea).
Lucru pe care trebuie să-l amintiți despre a inlocui() funcția în AS3 este că valoarea dvs. String trebuie să fie cuprinsă între slash-urile înainte -
slugAdd.replace (/ copii / g, "myReplacementText");
? și dacă doriți să înlocuiți și o slash înainte, trebuie să scăpați de acele personaje utilizând o bară înapoi înainte. Așa termini
slugAdd = slugAdd.replace (/ \ / childrens \ / g, "")
g parte îi spune să facă înlocuirea toate caractere și nu doar primul, și „“ este pentru înlocuirea dvs., ceea ce, în cazul meu, nu era deloc valoros. Pentru mai multe informații, consultați LiveDocs pe String.replace () și RegExp.
Acest lucru pare atât de simplu acum, dar a fost nevoie de o mulțime de Google căutându-mă să-mi dau seama că nu trebuie să folosesc o mare complicată funcție lungă doar pentru a elimina unele valori dintr-un șir. Caramba Aș fi vrut să fi găsit un tutorial de genul asta înainte de a începe :) Așa că acum avem slugul nostru, sau URL-ul pe care îl primim din fișierul XML al datagridului, trecut ca un nou var numit slugAdd
. Dar mai avem nevoie do ceva cu această variabilă.
Există în esență trei funcții esențiale care fac ca SWFAdress-ul meu să fie o legătură profundă (nu voi acoperi SWFAdress.setValue () deoarece este atât de ușor și evident că cred că o persoană din peșteră o poate folosi :)
Funcția One: handleSWFAddress ()
handleSWFAddress (eveniment: SWFAddressEvent): void
Munca ta de lucru pentru toate materialele de navigație. Având ca un eveniment pare să fie important, la început am folosit un alt exemplu online care nu a folosit această distincție, iar acest lucru funcționează cu siguranță mai bine.
Funcția a doua: getSelectedItem ()
getSelectedItem (): void
Aceasta trebuie să fie chemată după datele sunt deja populate sau în dispozitivul de preluare a rezultatelor pentru apelul de date. Timpul este foarte important aici, sau obiectele dvs. nu vor fi încărcate atunci când utilizatorii introduc adresa URL direct în browser, decât să facă clic pe aplicația dvs.! Această funcție corespunde unei adrese URL primite cu un anumit element dintr-un datagrid.
Funcția Trei: itemfromAddress ()
itemfromAddress (): void
Asta este de fapt face ceva cu intrarea datagrid - replicarea serviciului meu de clicuri datagrid într-un non eveniment , deoarece nu puteți apela o funcție bazată pe evenimente dintr-o altă funcție.
Să le luăm în ordinea modului în care vor fi folosite dacă cineva introduce într-o adresă URL în browser, căutând date din aplicația dvs. Din moment ce acest tutorial se concentrează pe navigarea datagrid dvs. - voi posta acest exemplu de la mine handleSWFAddress () chiar dacă puteți vedea restul dacă vă uitați la RoutingEvents.as fișierul inclus în descărcare pentru acest tutorial.
caz "/ copii /" + slugAdd:
Acest cod de mai jos este codul Google Analytics care este ușor de adăugat chiar alături de adresa SWFA.
tracker.trackPageview ("/ childrens /" + slugAdd);
Această declarație if-verifică dacă myURL
care mă alimentează HTTPService apelul de date este ceea ce avem nevoie pentru această secțiune și dacă această variabilă nu este deja stabilită, este cel mai probabil pentru că utilizatorul navighează prin adresa URL și aplicația nu a fost încărcată încă, deci trebuie să îi spunem aplicației ce date este această adresă URL așteptând să vadă. Nu vrem să eliminăm datele furnizorului de date, în cazul în care utilizatorul se află deja în aplicație și navigând prin datagrid, motiv pentru care avem nevoie de dacă afirmație. De asemenea, doar în cazul în care au fost altundeva în aplicația noastră cu alte date și navighează prin intermediul adresei URL la această vizualizare, trebuie să citim aceste date, să reîmprospătăm datagridul și să retrimităm HTTPService apel de date - în caz contrar, vom termina cu date suplimentare în datagridul nostru, ceea ce ne va face să ne înșelăm melc
variabilele cu slugAdd
variabile.
dacă (myUrl! = 'data / childrens_updown.xml') myUrl = 'data / childrens_updown.xml' invalidateDisplayList (); lecțiiDataProvider.removeAll () lecțiiDataProvider.refresh () httpService.send (); myDG.dataProvider = lecțiiDataProvider; myDG.validateNow () //Alert.show("Am schimbat datele în "+ myUrl)
Dacă utilizatorul intră prin URL - au executat deja getSelectedItem () funcție la sfârșitul apelului lor de date. Dar dacă aceste date sunt deja încărcate și încă încearcă să navigheze prin browser în loc să facă clic pe datagrid, vor trebui să se potrivească cu acea adresă URL a browserului cu activitatea pe care browserul așteaptă să o vadă, așa că trebuie să numim această funcție în acest caz:
getSelectedItem () curentState = "class1State"
Ne îndreptăm secțiune
variabilă aici pentru a vă asigura că, pe măsură ce un utilizator face clic pe aplicație, este corect secțiune
vor fi adăugate la adresa URL,
secțiune = pauză pentru copii;
Deci, să ne uităm la codul din nou împreună:
caz "/ copii /" + slugAdd: tracker.trackPageview ("/ childrens /" + slugAdd); dacă (myUrl! = 'data / childrens_updown.xml') myUrl = 'data / childrens_updown.xml' invalidateDisplayList (); lecțiiDataProvider.removeAll () lecțiiDataProvider.refresh () httpService.send (); myDG.dataProvider = lecțiiDataProvider; myDG.validateNow () getSelectedItem () currentState = "class1State" secțiune = "copii" pauză;
Acum, să ne uităm la bucata de frumusețe care a făcut cu adevărat să funcționeze totul. Am modificat acest lucru dintr-o bucată de cod scrisă de Anuj Gakhar pe intrarea pe blogul său Flex: Cum să selectați un element în DataGrid:
funcția privată getSelectedItem (): void //Alert.show ("Eu fac un getSelectedItem") var slugAdd: String = SWFAddress.getPath (); slugAdd = slugAdd.replace (/ \ / childrens \ / g, ""); slugAdd = slugAdd.replace (/ \ / început \ / g, ""); slugAdd = slugAdd.replace (/ \ / intermediar \ / g, ""); slugAdd = slugAdd.replace (/ \ / newsletter \ / g, ""); //Alert.show (slugAdd) //Alert.show (myDG.dataProvider.length + "lungimea de dateProvider") var gData: Object = myDG.dataProvider; dacă (slugAdd) pentru (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()
Aceste Alerte mi-au ajutat cu adevărat, așa cum am avut inițial acest cod în partea de sus a mea handleSWFAddress () care nu a funcționat. Această funcție trebuia să fie apelată la sfârșitul procesorului de date pentru dataProvider, care, la rândul său, trebuia să fie apelat de comutatoarele mele care conțin slugAdd
variabilă captată de SWFAdress. În caz contrar, datele nu sunt încă acolo, iar dvs. getSelectedItem () nu vor găsi niciun element care să corespundă valorii URL care a fost capturată.
Și în sfârșit, funcția care leagă SWFAddress-ul meu de a manevra toate împreună cu evenimente care schimbă ceea ce văd utilizatorul: itemfromAddress (). Aceasta schimbă lecția SWF afișată în SWFLoader-ul meu, la fel cum ar fi dacă un utilizator a dat clic pe un rând diferit din datagrid.
funcția privată itemfromAddress (): void swfLoader.unloadAndStop (); SoundMixer.stopAll (); selectedRow = Row (myDG.selectedItem); swfLoader.source = selectedRow.fileName;
Am dat peste o altă problemă: în cazul meu, am constatat că încărcarea datelor în principala mea datagrid după initul aplicației ar cauza probleme atunci când încearcă să comute acele date când oamenii încearcă să acceseze diferite date direct prin adresa URL. Aceleași date care s-ar încărca foarte bine atunci când au făcut clic pe aplicație au devenit inaccesibile dacă au încercat să utilizeze aceeași adresă URL direct pe o pagină nouă în care aplicația nu fusese încă încărcată. Acest lucru mi-a provocat o întreagă zi de durere în timp ce am adăugat încă o grămadă de Alerte la codul meu și am încercat să dau seama ce a fost problema cu încărcarea datelor.
În cele din urmă, pentru dataProviderul meu, care este dinamic, a trebuit să las acest lucru necompletat la inițiativa aplicației. Acest lucru a însemnat schimbarea ecranului meu inițial de la unul cu date la unul fără. Cealaltă soluție ar putea fi utilizarea unui alt furnizor de date, dar am decis că nu trebuie să fac acest lucru, deoarece un ecran static funcționează mai bine ecranul de pornire al aplicației oricum.
De asemenea, mi-am dat seama că trebuie să le folosesc dacă declarații pentru a verifica dacă dataProviderul corect a fost deja încărcat sau nu.
În timp ce mi-am luat creierul în jurul valorii de SWFAdress, a trebuit să reamintesc din nou că browserul nu are nicio idee despre datele pe care încerci să le încarci dacă nu spune ce date ar trebui să fie acolo. De la sine, variabila ta slugAdd
nu înseamnă nimic. Dar odată ce capturați acea valoare și puneți variabila în joc handleSWFAddress () puteți să o potriviți cu ușurință cu indexul datagrid și să efectuați ceva asemănător cu funcția de clic pentru datagrid.
Un alt lucru pe care trebuia să-l fac era ca datele mele să nu fie listate de două ori în datagrid, ceea ce poate fi o problemă atunci când trimiteți același HTTPService solicitați în diferite părți ale aplicației dvs. Am constatat că acest lucru funcționează frumos pentru a ține datagrid-urile să nu îndepărteze XML din cererea de date anterioară.
lecțiiDataProvider.removeAll () lecțiiDataProvider.refresh () httpService.send (); myDG.dataProvider = lecțiiDataProvider; myDG.validateNow ()
Facând inlătură tot() pe lecțiiDataProvider (numele meu HTTPService cerere variabilă) a fost cheia pentru a scăpa de intrările XML duplicat. În timp ce nu sunt sigur că trebuie să continuați să faceți httpService.send () de fiecare dată când doriți să încărcați un set specific de date direct de la o adresă URL, nu doar în init () din aplicație, făcând-o așa, funcționează astfel, așa că am rămas cu ea. Am două cereri de date în diferite părți ale aplicației, deși (lecțiiDataProvider și lecțiiDataProvider6, rămase de la ridicolul meu SIX HTTPService solicită că am început cu :) - dacă aveți doar o singură cerere de date, poate că acest lucru nu este necesar (în cealaltă parte a aplicației mele, httpService6.send () este necesar).
Acum, pentru munca suplimentară agravantă, am avut de făcut pentru a face ca aplicația mea să fie prietenoasă. Prin ea însăși, SWFAddress oferă un avantaj SEO absolut zero. Paginile dvs. nu vor ajunge la Google, Yahoo sau orice alt motor de căutare. Nu și, dacă este sau nu. De ce este asta? Întrucât întreaga schemă de legare profundă a SWFAdress depinde de aceste lucruri de tip "hash" - semnul de literă # care este folosit în fiecare pagină creată de SWFAdress. Și Google ignoră totul după acest simbol, astfel încât robotul nu va vedea niciodată altceva decât pagina dvs. principală. Nu contează cât de multe url-uri aveți.
Iar exemplul SEO oferit de oamenii de la SWFAdress nu face exact un lucru intuitiv de a le replica folosind propriile date. Ideea că va trebui să vă recreezi site-ul în HTML pentru a vă ascunde sub celălalt site - este într-adevăr doar o opțiune pentru persoanele care au un site Flash sau ceva asemănător. Pentru oricine care are o aplicație grasă Flex mai degrabă decât un site web de tip puf, este un pic de glumă. Cum ar trebui să construiți un site alternativ atunci când totul se bazează pe activități SWF alimentate de XML?
Dar mi-am dat seama că nu trebuie să construiesc altceva decât un link, un titlu și o descriere care este doar o altă versiune a aceluiași titlu și folosind o foaie de calcul care este ceea ce folosesc pentru a-mi construi toate leagă oricum, aș putea tăia și lipi cu ușurință valorile corespunzătoare adreselor URL ale aplicației Flex.
Fișierele pe care le-am folosit pentru propria mea implementare a SEO pentru SWFAddress au fost modificate din pachetul găsit la pokd.org. Tutorialul pentru utilizarea acestor fisiere este scurt, simplu si usor de urmarit. Puteți găsi tutorial aici. Versiunea SEO de la Asual.com nu a funcționat deloc pentru mine și am găsit că alți oameni se plâng de același lucru. Nu pierdeți timpul: descărcați versiunea de la pokd.org sau utilizați fișierele găsite în pachetul de descărcare pentru acest tutorial. Mi-am trunchiat propriile dosare un pic pentru a arăta doar primele mele două secțiuni: copii și începutul, pentru a face fișierele mai ușor de citit.
Trebuie să dezactiva javascript în browserul dvs. pentru a testa versiunea non Flex / Flash a site-ului dvs.! Asta face vizibilitatea supraîncărcării principalei diviziuni. Cu excepția cazului în care aveți site-uri de 5 sau 10 pagini, depășirea ascunsă face ca testarea să fie imposibilă. Fișierele SEO suplimentare pe care le veți folosi sunt compuse din 2 fișiere PHP, 1 fișier .htaccess și 1 fișier Javascript suplimentar care trebuie plasat în / swfaddress dosar în flex / Bin-eliberare pliant).
Deschideți aplicația de calcul tabelar și deschideți fișierul denumit swfaddress_seo_index.ods sau .xls pe care îl veți găsi în pachetul de descărcare pentru acest tutorial. Modificați-le pentru a se potrivi nevoilor dvs. Aceasta este foaia de calcul în care am tras valorile pentru adresa URL a aplicației, secțiunile și melc
adrese pentru a crea toate swf_link [a hrefs] necesare pentru index.php fișier (Veți avea nevoie de URL-ul dvs. complet "curățat" la fiecare link fără main.html #
precum și titlul paginii dvs.). Tăiați și lipiți din aplicația dvs. de foaie de calcul în Notepad ++ sau orice alt editor de cod de text pe care îl utilizați și asigurați-vă că nu aveți file sau spații inutile și că totul pare corect pentru inserarea în fișierul dvs. PHP.
Noile mele url-uri complete arătau astfel în browser, rețineți că simbolul hash (#) a dispărut acum:
http://www.instaspanish.com/dev/demo/childrens/up_downvocab
Deoarece am peste 70 de pagini, am ales doar să pun secțiunile pe index.php pagină. Celelalte demonstrații pe care le-am văzut toate includ toate paginile site-ului, însă acestea sunt site-uri mici. Includerea unui link către fiecare pagină de pe site index.php înseamnă că de fiecare dată când botul Google vizitează o pagină individuală, acesta va vedea toate aceste link-uri. Aceasta este o idee rea. Deci, puneți doar paginile dvs. principale în index.php pagina și lăsați-o pe datasource.php ai grijă de restul.
Uitați-vă la foaia de calcul intitulată swfaddress_seo_datasource.ods sau .xls în fișierele pentru acest proiect. Acest exemplu arată cum am tăiat și lipit valori din baza mea de date pentru a popula declarațiile comutatorului. După ce ați completat această foaie de calcul cu propriile valori, utilizați un editor de cod, cum ar fi Notepad ++, pentru a elimina orice file suplimentare și pentru a verifica formatarea corectă înainte de inserarea în fișierul dvs. PHP.
Comenzile de comutare sunt destul de simple, deși în cazul meu am vrut să includ și conținutul fiecărui fișier XML care alimentează activitățile mele educaționale, pentru a le folosi acele cuvinte cheie în fiecare fișier văzut de motoarele de căutare. Exemplele pe care le-am văzut au presupus că cineva se va așeza și va crea descrieri de pagină unice pentru fiecare fișier reprezentat în datasource.php fișier, dar este o opțiune teribil de consumatoare de timp pentru cineva cu zeci sau sute de înregistrări de tip datagrid în site-ul Flex. Așadar, am creat o pagină nouă content.php care utilizează o altă descriere a paginii în funcție de ce activitate se găsește în URL. De asemenea, anexez imprimarea din XML pentru orice pagină care are și un fișier XML asociat cu acesta.
caz "/ început": echo ('Această secțiune este pentru persoanele cu vârsta de 10 ani și peste care doresc să înceapă cu elementele de bază într-un curs spaniol de 18 săptămâni. Unele subliniază: pronunția și accentele verbe și temele începând să vorbească foi de lucru spaniole și chestionare Insta Spaniolă eLearning Demo Început Lecția spaniolă.
'); pauză; cazul "/ childrens / up_downvocab": echo ('Lecția spaniolă pentru copii - sus și jos - Lista cu lecții de vocabular
„); $ xml_file = 'http://www.instaspanish.com/dev/activities/assets/lessons/up_down/xml/hover_word_list.xml'; givemeText (); outputXML (); pauză;
Fișierul .htaccess trebuie să fie ajustat în funcție de dosarul de bază pentru configurația serverului dvs. particular. De exemplu, dosarul meu de testare XAMPP din interiorul / htdocs se numește instademo, astfel încât .htaccess mea are această linie pentru RewriteBase:
RewriteBase / instademo
Aplicația Flex de pe serverul meu live este de asemenea inclusă într-un subfolder și nu în dosarul meu de acasă, astfel încât linia de mai sus, în acel caz, indică acest dosar. Rețineți că începe cu un slash înainte, dar nu au o bară laterală.
Activați XAMPP sau orice ați folosi pentru configurația locală Apache / PHP și puneți fișierele PHP, .htaccess, javascript și Flex în subfolderul / htdocs dosar sau orice alta setare foloseste ca dosar pentru fisiere web. Dacă doriți să testați site-ul SEO, va trebui să dezactiva javascriptul. Aceasta este versiunea pe care o vor vedea motoarele de căutare pe care le vor vedea, precum și orice vizitator de web care nu are javascript sau Flash activat. Verificați pentru a vă asigura că nu vedeți nici o eroare PHP și că link-urile dvs. funcționează corect.
Sitemap-ul este cel mai ușor de creat. Luați swfaddress_link
valori de la dvs. swfaddress_seo_index.ods sau .xls foaie de calcul. Inserați-le pe toate în Notepad ++ sau în editorul de cod și executați o căutare și înlocuiți-le pentru a elimina spațiile sau filele, apoi adăugați adresa URL completă. În cazul meu, am luat valori precum:
/ Copii / up_downvocab
/ Copii / up_downlesson1
/ beginningpresent_verbslesson1
/ beginningpresent_verbslesson2
Și le-au schimbat la:
http://www.instaspanish.com/dev/demo/childrens/up_downvocab
http://www.instaspanish.com/dev/demo/childrens/up_downlesson1
http://www.instaspanish.com/dev/demo/beginningpresent_verbslesson1
http://www.instaspanish.com/dev/demo/beginningpresent_verbslesson2
Salvați acest fișier ca a .txt fișier, apoi deschideți programul dvs. Vigos Gsitemaps și importați aceste adrese URL pentru a crea Sitemap Google.
Paginile dvs. de SEO au șanse mai mari