For å lage et smart banner må du legge til en feed - en fil med informasjon om varer og tjenester. Direct vil analysere innholdet i feeden og automatisk generere et smart banner med produkttilbud for visning på nettverk. Du kan bruke feeden som ble lastet opp når du oppretter dynamiske annonser.
Bedrifts- og fôrtyper
For å laste opp feeden din, må du velge hvilken type virksomhet du annonserer for.
Fôrtype | Type virksomhet | For hva |
---|---|---|
Yandex.Market-feed (XML) | Detaljhandel | Salg av elektronikk og tilbehør, husholdningsapparater, industrielt utstyr, klær, møbler, hagevarer, sportsutstyr, byggevarer, barnevarer, dekk og hjul, kosmetikk, parfymer m.m. |
Mate "Hotell og utleieboliger" Google Ads (CSV) | Hoteller | Hotell reservasjon |
Feed Auto.ru (XML) | Biler | Salg av nye og brukte biler |
Yandex.Realty-feed (XML) | Eiendom | Salg av boligeiendom |
Google Ads «Flyreiser»-feed (CSV) | Flyreiser | Salg av flybilletter |
Universalfeed (CSV) | Annen virksomhet | Varer og tjenester som ikke egner seg for andre typer virksomhet |
Yandex.Market-feed (XML) | ||
Google Ads Special-feed (CSV). | ||
Google Ads reisefeed (CSV) | Salg av turer, togbilletter, ferger m.m. |
Produkttilbud som ikke er beskrevet i henhold til deres type, avvises.
Fôrkrav
Ethvert XML-dokument kan bare inneholde ett rotelement. YML-formatet bruker elementet som root
- Forenklet beskrivelsestype
- Egendefinert beskrivelsestype (vendor.model)
Grunnleggende, enklere type beskrivelse.
Eksempel:
Elementattributter
Varer inkludert i
Element | Beskrivelse |
---|---|
Navn | Navnet på produkttilbudet. Det anbefales å angi produsentens navn og kode i tittelen på et forenklet forslag. Nødvendig element. |
url | Produktside-URL. Nødvendig element. |
bilde | |
pris | |
valuta-ID | |
modell | |
Leverandør | Produsent. |
leverandørkoden | |
beskrivelse | |
kategori-ID | |
markedskategori | |
butikk | |
plukke opp | |
leveranse | |
gammel pris | |
salgsnotater | Informasjon om bestilling: |
Produsentgaranti | Tilgjengelighet av garanti: |
opprinnelsesland | Opprinnelsesland for produktet. |
voksen | |
alder | |
nedlastbar | Mulighet for å laste ned produktet: sant - produktet kan lastes ned; usann - produktet kan ikke lastes ned. |
Denne typen beskrivelse er den mest praktiske og allsidige; den anbefales for å beskrive produkter fra de fleste kategorier.
Eksempel:Elementattributter
Egenskap | Beskrivelse |
---|---|
id | Produkt ID. Obligatorisk attributt. |
type | Obligatorisk attributt. |
tilgjengelig | Mulighet for å kjøpe et produkt:
|
Egenskap | Beskrivelse |
---|---|
id | Produkt ID. Obligatorisk attributt. |
type | Tilbudsbeskrivelsestype. Verdien skal være vendor.model. Obligatorisk attributt. |
tilgjengelig | Mulighet for å kjøpe et produkt:
|
Varer inkludert i
Element | Beskrivelse |
---|---|
url | Produktside-URL. Nødvendig element. |
bilde | Et must for smarte bannere. |
pris | Prisen dette produktet kan kjøpes for. |
valuta-ID | Valutakode (RUB, USD, UAH, KZT). Obligatorisk hvis det er et priselement. |
modell | Nødvendig element. |
Leverandør | Produsent. Nødvendig element. |
leverandørkoden | Produktkode (produsentens kode er angitt). |
beskrivelse | Beskrivelse av produkttilbudet. |
typePrefiks | |
kategori-ID | Nødvendig element. Element |
markedskategori | |
butikk | Mulighet for å kjøpe en vare i en butikk: sant - produktet kan kjøpes i en butikk; usant - det er ingen mulighet til å kjøpe fra en butikk. |
plukke opp | Henting fra hentepunkter: sant - produktet kan hentes selv; usant - det er ingen mulighet for selvhenting. |
leveranse | Mulighet for budlevering av varer: sant - kurerlevering er mulig; falsk - varene kan ikke leveres med bud. |
gammel pris | Den gamle prisen for produktet, som må være høyere enn den nye prisen (prisen). |
salgsnotater | Informasjon om bestilling: minimumsordrebeløpet, minimumspartiet med varer, behovet for forhåndsbetaling; betalingsmåter, beskrivelser av kampanjer og salg. |
Produsentgaranti | Tilgjengelighet av garanti: sant - produktet har en offisiell garanti; usant - produktet har ingen offisiell garanti. |
opprinnelsesland | Opprinnelsesland for produktet. |
voksen | |
alder | |
nedlastbar | Mulighet for å laste ned produktet: sant - produktet kan lastes ned; usann - produktet kan ikke lastes ned. |
Hoteller: Google Ads Hotels & Rentals-feed
Mate "Hotell og utleieboliger" Google Ads CSV må brukes for virksomhetstypen hoteller. Den første linjen inneholder kolonnenavnene, og de neste linjene inneholder selve dataene. Innholdet i kolonnene er atskilt fra hverandre med komma. Dataene i feeden må være i UTF-8-koding.
Element | Beskrivelse |
---|---|
Hotell-ID. Nødvendig element. |
|
Navnet på hotellet. Nødvendig element. |
|
Nettadresse til tilbudssiden. Nødvendig element. |
|
Destinasjonsnavn | Nødvendig element. |
Et must for smarte bannere. |
|
Pris | |
Element | Beskrivelse |
---|---|
Hotell-ID. Nødvendig element. |
|
Navnet på hotellet. Nødvendig element. |
|
Nettadresse til tilbudssiden. Nødvendig element. |
|
Destinasjonsnavn | Hotellets beliggenhet (maksimalt 25 tegn). Nødvendig element. |
Et must for smarte bannere. |
|
Pris | Tilbudsprisen. Nummer og valutakode (RUB, USD, UAH, KZT). Bruk et punktum (.) som desimalskilletegn. |
Antall stjerner. Et heltall fra 1 til 5. |
|
Brukervurdering, antall. Bruk et punktum (.) som desimalskilletegn. |
|
Maksimal mulig poengsum, heltall. Standard er 5. |
|
Hotelltjenester. Skriv inn verdier atskilt med semikolon: bar; basseng; gratis Wi-Fi |
Merk. Verdier som inneholder komma må omsluttes av anførselstegn (\ "\"). For eksempel \ "Moskva, sentrum \".
Biler: feed Avto.ru
Auto.ru-feeden i XML-format skal brukes for virksomhetstypen "Biler". Dataene i feeden må være i UTF-8-koding.
Listen over tilbud for salg av eiendom til annonsøren er inneholdt i elementet
I en feed kan du overføre informasjon om forskjellige boligkomplekser til forskjellige utviklere. For å gjøre dette, spesifiser i hver
Merk følgende.
Vi aksepterer ikke leiefeeder.
Eksempel:
Elementattributter
Varer inkludert i
Tabellen nedenfor beskriver feedelementene som brukes til å lage smarte bannere eller dynamiske annonser.
Element | Beskrivelse |
---|---|
type | Avtaletype. Verdien er kun et salg. Nødvendig element. |
plassering | Nødvendig element. |
lokalitetsnavn | Navnet på bebyggelsen. Nødvendig element. |
sub-lokalitet-navn | |
adresse | |
metro | Nærmeste t-banestasjon. |
Navn | |
tid på transport | |
tid til fots | |
url | Nødvendig element. |
bilde | Et must for smarte bannere. |
bygningsnavn | Nødvendig element. |
selger | Nødvendig element. |
organisasjon | Nødvendig element. |
pris | |
verdi | |
valuta | Valutakode (RUB, USD, UAH, KZT). |
område | Totalt areal. \ n |
verdi | |
enhet | Enhet av rommets areal. |
gulv |
Element | Beskrivelse |
---|---|
type | Avtaletype. Verdien er kun et salg. Nødvendig element. |
plassering | Et sett med elementer som beskriver plasseringen til et objekt. De nestede kodene detaljert informasjon om objektets adresse. Nødvendig element. |
lokalitetsnavn | Navnet på bebyggelsen. Nødvendig element. |
sub-lokalitet-navn | |
adresse | |
metro | Nærmeste t-banestasjon. Dersom det er flere stasjoner skal hver spesifiseres i et eget element. Subtags gir detaljert informasjon. |
Navn | |
tid på transport | Tid til t-banen på minutter med transport. |
tid til fots | |
url | Nødvendig element. |
bilde | Et must for smarte bannere. |
bygningsnavn | Navnet på boligkomplekset. For dette elementet er leiligheter kombinert til et boligkompleks. Hvis navnet på boligkomplekset er ukjent, angi gate og husnummer (Lenina, 25) Nødvendig element. |
selger | Informasjon om utbygger. De nestede kodene gir detaljert informasjon: Nødvendig element. |
organisasjon | Navnet på den juridiske enheten til utvikleren. Nødvendig element. |
pris | Et sett med elementer som beskriver verdien av et objekt. De nestede kodene indikerer prisen og valutaen som kostnaden er angitt i: |
verdi | |
valuta | Valutakode (RUB, USD, UAH, KZT). Obligatorisk hvis det er et verdielement. |
område | Totalt areal. Verdien og måleenheten for området sendes i nestede tagger: \ n |
verdi | |
enhet | Enhet av rommets areal. Elementet brukes dersom prisen er angitt per arealenhet. Mulige verdier: kvm. m / kvm. m. |
gulv |
Flyreiser: Google Ads «Flyreiser»-feed
Google Ads-CSV-feeden for Flyreiser må brukes for Flyreiser-virksomheten. Den første linjen inneholder kolonnenavnene, og de neste linjene inneholder selve dataene. Innholdet i kolonnene er atskilt fra hverandre med komma. Dataene i feeden må være i UTF-8-koding.
Eksempel: Elementer inkludert i CSV
Tabellen nedenfor beskriver feedelementene som brukes til å lage smarte bannere eller dynamiske annonser.
Element | Beskrivelse |
---|---|
Nødvendig element. |
|
Destinasjonsnavn | Destinasjonsnavn. Nødvendig element. |
e-handel |
|
Opprinnelsesnavn. |
|
Nettadresse til tilbudssiden. Nødvendig element. |
|
Et must for smarte bannere. |
|
Flypris | Tilbudsprisen. Nummer og valutakode (RUB, USD, UAH, KZT). Bruk et punktum (.) som desimalskilletegn. |
Element | Beskrivelse |
---|---|
Destinasjonsidentifikator. Nødvendig element. |
|
Destinasjonsnavn | Destinasjonsnavn. Nødvendig element. |
Opprinnelsesidentifikator. Hvis du angir Origin ID i feeden og har aktivert e-handel i Yandex.Metrica, bruk Origin ID og Destination ID som en identifikator i Ecommerce-objektet, atskilt med en bindestrek. For eksempel \ "id \": \ "VKO-LHR \". |
|
Opprinnelsesnavn. |
|
Nettadresse til tilbudssiden. Nødvendig element. |
|
Et must for smarte bannere. |
|
Flypris | Tilbudsprisen. Nummer og valutakode (RUB, USD, UAH, KZT). Bruk et punktum (.) som desimalskilletegn. |
Annen virksomhet: universalfôr
En generisk CSV-feed kan brukes i typen Annen virksomhet. Den første linjen inneholder kolonnenavnene, og de neste linjene inneholder selve dataene. Innholdet i kolonnene er atskilt fra hverandre med komma. Dataene i feeden må være i UTF-8-koding.
Elementer inkludert i CSV
Element | Beskrivelse | |
---|---|---|
Tilbuds-ID. Nødvendig element. |
||
e-handel |
||
Nettadresse til tilbudssiden. Nødvendig element. |
||
Et must for smarte bannere. |
||
Tittel | Navnet på tilbudet. | |
Beskrivelse | Beskrivelse av tilbudet. |
|
ID for valutatilbud. Nødvendig element. |
||
Den andre identifikatoren for tilbudet. Hvis du spesifiserer ID2 i feeden og har aktivert e-handel i Yandex.Metrica, bruk ID og ID2 atskilt med en bindestrek som tilbudsidentifikator i Ecommerce-objektet. For eksempel \ "id \": \ "VKO-LHR \". |
||
Nettadresse til tilbudssiden. Nødvendig element. |
||
Et must for smarte bannere. |
||
Tittel | Navnet på tilbudet. | |
Beskrivelse | Beskrivelse av tilbudet. |
|
Tilbudspris uten valuta. Bruk et punktum (.) som desimalskilletegn. |
||
Valuta | Valutakode (RUB, USD, UAH, KZT). Obligatorisk hvis det er et priselement. |
|
Den gamle tilbudsprisen, som må være høyere enn den nye prisen (Pris). | Beskrivelse | |
Tilbuds-ID. Nødvendig element. |
||
Den andre identifikatoren for tilbudet. Hvis du spesifiserer ID2 i feeden og har aktivert e-handel i Yandex.Metrica, bruk ID og ID2 atskilt med en bindestrek som tilbudsidentifikator i Ecommerce-objektet. For eksempel \ "id \": \ "VKO-LHR \". |
||
Nettadresse til tilbudssiden. Nødvendig element. |
||
Et must for smarte bannere. |
||
Varetittel | Navnet på tilbudet. |
|
Varebeskrivelse | Beskrivelse av tilbudet. |
|
I Yandex.Metrica bruker du ID og ID2 atskilt med en bindestrek som tilbudsidentifikator i e-handelsobjektet. For eksempel \ "id \": \ "VKO-LHR \". |
||
Nettadresse til tilbudssiden. Nødvendig element. |
||
Et must for smarte bannere. |
||
Varetittel | Navnet på tilbudet. |
|
Varebeskrivelse | Beskrivelse av tilbudet. |
|
Tilbudspris med valutakode i ISO 4217-koding (RUB, USD, UAH, KZT). Bruk et punktum (.) som desimalskilletegn. |
||
Den nye tilbudsprisen, som må være lavere enn den gamle prisen (Pris). |
Annen virksomhet: Google Ads reisefeed
Google Ads Travel CSV-feeden kan brukes i typen Annen virksomhet. Den første linjen inneholder kolonnenavnene, og de neste linjene inneholder selve dataene. Innholdet i kolonnene er atskilt fra hverandre med komma. Dataene i feeden må være i UTF-8-koding.
Elementer inkludert i CSV
Tabellen nedenfor beskriver feedelementene som brukes til å lage smarte bannere.
Element | Beskrivelse |
---|---|
Destinasjonsidentifikator. Nødvendig element. |
|
Destinasjonsnavn | Destinasjonsnavn. |
Opprinnelsesidentifikator. Hvis du skriver inn Origin ID i feeden og har koblet til e-handel |
|
Opprinnelsesnavn. |
|
Nettadresse til tilbudssiden. Nødvendig element. |
|
Et must for smarte bannere. |
|
Navnet på tilbudet. | |
Destinasjonsidentifikator. Nødvendig element. |
|
Destinasjonsnavn | Destinasjonsnavn. |
Opprinnelsesidentifikator. Hvis du angir Origin ID i feeden og har aktivert e-handel i Yandex.Metrica, bruk Origin ID og Destination ID atskilt med en bindestrek som identifikator for forslaget i Ecommerce-objektet. For eksempel \ "id \": \ "MOS-AMS \". |
|
Opprinnelsesnavn. |
|
Nettadresse til tilbudssiden. Nødvendig element. |
|
Et must for smarte bannere. |
|
Navnet på tilbudet. |
|
Tilbudspris med valutakode i ISO 4217-koding (RUB, USD, UAH, KZT). Bruk et punktum (.) som desimalskilletegn. |
|
Den nye tilbudsprisen, som må være lavere enn den gamle prisen (Pris). |
Legger til en feed
For å legge til en feed, klikk på Feeder-koblingen på siden med en liste over kampanjer. På siden Fôrhåndtering klikk på + Legg til feed-knappen og velg virksomhetstype.
- Link til fil
- Last opp fil
Velg filen du vil laste ned. Størrelsen på den opplastede filen må ikke overstige 512 MB. Ved oppdatering lastes filen ned av roboten, og de nye dataene importeres til Direct.
Du kan plassere feeden din i et arkiv opprettet ved hjelp av ZIP-komprimeringsalgoritmen (.zip-utvidelsen) eller GNU ZIP (.gz-utvidelsen).
Hvis det oppstod en feil under å legge til en feed (for eksempel størrelsen, feedformatet eller lenken til den oppfyller ikke kravene), vil du se statusen "Lastingsfeil" og en lenke til feilrapporten.
Filvalidering
Når du leser en fil, kontrolleres følgende forhold:
- alle nødvendige elementer er tilstede;
- alle elementnavn er korrekte;
- hvert element er tilstede maksimalt én gang.
Hvis noen av disse betingelsene ikke er oppfylt, blir filen avvist.
- Ingen beskrivelse funnet for elementet "yml_catalog". Rotelementet kan være feil spesifisert.
- Fatal feil: Feil ved analyse av XML-feed: Ukjent tag: XML-tag "b" (streng ...
- Det nødvendige bildeelementet mangler
- XML-spesifikasjonsfeil. Ta med prislisten i samsvar med de tekniske kravene til det valgte formatet ...
- Ingen obligatoriske tilbuds parameter
Feilen skyldes tilsynelatende det faktum at XML ikke er generert i det hele tatt, eller at du fortalte Yandex en feil lenke til YML. For å finne årsakene til feilen, åpne lenken til YML-en din i en nettleser.
I prosessen med å generere YML, var det en slags feil. PHP sendte en feilmelding, og den gjør det i "b"-taggen. Åpne YML-kildekoden, du kan enkelt finne PHP-feiltekst etter linjenummer. Hvis du ikke vet hva det betyr, søk på Google. Jeg er sikker på at du vil finne anbefalinger om hvordan du kan fikse denne feilen.
I henhold til Yandex.Market-reglene må et produkt i eksporten ha et bilde, minst ett. Produkter uten bilder eksporteres ikke. Sjekk at det er et tall større enn null i feltet "Antall produktbilder" i modulinnstillingene. Og sjekk at produktene i butikken har bilder.
Feilen er forårsaket av tilstedeværelsen av fremmede tagger i YML-eksporten. Dette skjer hvis du eksporterer noe i nøkkelord-taggen. Yandex trenger ikke denne taggen. I modulinnstillingene, spesifiser "Ta nøkkelord-taggen fra feltet" = "Ikke tøm"
Feilen sier at en nødvendig parameter for produkttilbud ikke ble funnet i YML. For klær, fottøy og tilbehør må fargen og størrelsen på produktet være tilstede i YML. Ved linjen der feilen oppsto, kan du finne ut hvilket produkt som ikke har spesifisert farge og/eller størrelse. For dette produktet i OpenCart må du spesifisere et attributt eller et alternativ som skal eksporteres av modulen i YML. Merk av for dette attributtet eller alternativet med en avmerkingsboks i modulinnstillingene.
Feil vist i nettleseren
- Når du åpner YML i en nettleser, feil 500 eller 502 "Bad Gateway", eller bare en hvit skjerm.
- XML-analysefeil: rotelementet ble ikke funnet
- Feil "Maksimal utførelsestid på 30 sekunder overskredet"
- Ikke alle varer er inkludert i eksporten.
Skriptet som genererer YML ble fullført med en feil. Nettstedets innstillinger er slik at ingen feil vises. Du må aktivere visning av feil. Å inkludere feil i butikkinnstillingene i OpenCart-adminpanelet vil mest sannsynlig ikke være nok. Visning av feil må være aktivert i .htaccess- og php.ini-filene. Men selv dette er kanskje ikke nok. Nettstedsverten kan konfigureres på en slik måte at disse filene kanskje ikke påvirker feilutgangen. Den beste måten er å kontakte hosting teknisk støtte.
Skriptet som genererer YML ble fullført med en feil. Samtidig var ikke YML fullstendig dannet - det er ingen avsluttende tagger. Ta en titt på YML-kildekoden. Hvis det er en feilmelding på slutten, se etter feilteksten i Yandex eller Google. Hvis det ikke er noen feilmelding, se forrige punkt.
PHP-skriptet får 30 sekunder til å kjøre som standard. Hvis skriptet ikke genererte YML på 30 sekunder, ble skriptet tvangsavbrutt. Selvfølgelig ble ikke YML dannet på samme tid, eller det var ikke fullstendig dannet.
Faktum er at eksport av hele råvarebasen er en ganske ressurskrevende operasjon. Skalering av bilder for Yandex tar mye tid, fordi Yandex godtar bilder på minst 600x600 piksler i størrelse. Heldigvis lagrer OpenCart skalerte bilder i bildebufferen. Ved re-eksport vil bilder raskt bli tatt fra cachen. Inntil bildebufferen er fullstendig dannet, kan YML-eksportskriptet ta lang tid. Prøv å kjøre skriptet flere ganger, cachen vil bli dannet, skriptet vil fungere raskere og falle innenfor tidsgrensen.
Hvis dette ikke hjelper, er YML-genereringstiden fortsatt lang (på grunn av det faktum at du har mange produkter), så kan du prøve å øke parameteren max_execution_time i PHP php.ini-filen.
Hvis dette ikke er nok (hostingen din er ganske svak for en nettbutikk med en slik produktbase), kan du prøve å generere en YML-eksport ved å kjøre skriptet gjennom php-cli.
Spørsmål om YML-innhold
Det kan være flere grunner til at ikke alle produkter er til stede i YML-eksporten. Den vanlige årsaken er modulinnstillingene og innholdet i produktbasen.
- Produsenten er ikke spesifisert for produktene, men produsentene velges i innstillingsfanen i modulen "Hva skal eksporteres".
- Produkter har ikke hovedkategorier, men det er en avkrysningsboks "Produkter har hovedkategorier" i fanen "Generelt".
- Produktet er i svartelisten eller ikke i hvitelisten, som er spesifisert på fanen "Eksporter hva" i modulinnstillingene.
- Feltene "Last kun av hvis varene er dyrere", "Ikke losses hvis varene er dyrere" eller avkrysningsboksen "Ikke losse varer uten bilder" i fanen "Hva skal eksporteres" utelukker varene fra å bli eksportert.
- Varene er utsolgt, og statusen «Utsolgt» er slik at varene ikke eksporteres. For å eksportere det ferdige produktet, i fanen "Lager og levering" i modulinnstillingene, ikke velg noen status i feltet "Status Ikke på lager".
I OpenCart kan et enkelt produkt vises i flere kategorier, men i YML-format kan et produkt bare tilhøre én kategori. Eksportmodulen binder produktet til den første tilgjengelige kategorien. Derfor kan det vise seg at det i noen kategorier ikke er varer, og disse kategoriene vil ikke være til stede i eksporten, selv om varene vil være til stede, men i andre kategorier.
ocStore har hovedkategorier, og du kan kun koble produkter til hovedkategoriene. For å gjøre dette, kryss av i boksen "Produkter har hovedkategorier" i modulinnstillingene. I dette tilfellet vil du motta en mer detaljert klassifisering av varer i YML-eksporten, men varer som ikke er satt til hovedkategori, vil ikke bli eksportert i det hele tatt.
Hvordan gjøre for å...?
- Hvordan ikke eksportere et produkt som har null mengde?
I modulinnstillingene, i fanen "Lager og levering" ser du etter statusfeltet "Ikke på lager". I dette feltet merker du av for Alle produktstatuser. For å merke flere elementer i listen, hold nede Ctrl-tasten mens du klikker med musen.
Utvikling i språk: PHP, JavaScript, node.js. Database: MySQL, PostgreSQL, MongoDB.
Foredling av CMS: OpenCart, PrestaShop, Wordpress. Integrasjon med: betalingssystemer, VKontakte, Facebook, Yandex.
Et trekk ved fleksible dokumenter er den inkonsekvente sammensetningen av felt i forskjellige bilder. Derfor, når du oppretter et element, bør det tas i betraktning at objektet (e) beskrevet av dette elementet kan være fraværende i et bilde, derfor vil det ikke være mulig å finne det. Det er også mulig å skade bildet under skanning, for eksempel sverting eller omvendt lysere enkelte områder av bildet, noe som fører til tap av informasjon. I dette tilfellet vil objektet som tilsvarer elementet heller ikke bli funnet. FlexiLayout Studio lar deg søke etter andre elementer hvis det ikke er noe element på bildet. For å tillate overlagring av en beskrivelse på et bilde hvis et objekt ikke blir funnet, må du gjøre det valgfritt.
Bildeobjekter beskrevet med obligatorisk elementer må være tilstede i bildet, og programmet må finne dem ved overlegging av en fleksibel beskrivelse. Hvis et slikt objekt ikke finnes i bildet, avsluttes beskrivelsesoverleggsprosessen.
Nødvendige elementer SKAL brukes for å finne objekter som identifiserer skjemaet. Tilstedeværelsen av et slikt identifikasjonselement vil forhindre at den fleksible beskrivelsen pålegges et skjema som ikke tilhører denne skjematypen. Du kan også bruke et nødvendig element for å beskrive bildeobjekter, hvis fravær på skjemaet gjør det meningsløst å pålegge en fleksibel beskrivelse og ytterligere datagjenkjenning.
I alle andre tilfeller bør bildeobjekter beskrives med valgfrie elementer.
Objekter for å beskrive som brukes valgfri elementer kan mangle fra bildet, eller programmet oppdager dem kanskje ikke når fleksible beskrivelser overlegges. Men i dette tilfellet kan den fleksible beskrivelsen legges over bildet, og objektene til bildet beskrevet av andre elementer vil bli funnet.
Som standard er alle enkle beskrivende elementer valgfrie, dvs. det antas at de kanskje ikke finnes på bildet.
Kommentar. I motsetning til enkle elementer, er alle gruppeelementer obligatoriske som standard.
Tilstedeværelsen av et bestemt element kan bety at den konstruerte kjeden av hypoteser er feil. Disse elementene kalles ugyldige elementer... Når dette elementet er funnet, stopper genereringen av hypoteser om tregrenen det ble funnet i. Disse elementene kan for eksempel brukes for å forhindre falsk pålegging av beskrivelsen på dokumentet.
Dermed kan elementer brukes til å identifisere et dokument (påkrevd), søke etter blokker (påkrevd og valgfri), og for å forkaste ugyldige hypoteser (ugyldige elementer).
Valget av alternativet for bruk av elementet utføres i dialogboksen for elementegenskaper (tab Generell).
Bildene av nødvendige og ugyldige varer er uthevet som følger.
Bilder er uten tvil en av de vanskeligste aspektene ved responsiv webdesign. I dag vil vi vurdere som et element
Først om problemet
Dagene med pikselperfekt og design med fast bredde hører fortiden til. Nå i tiden med widescreen-skjermer, internett-TV, nettbrett og smarttelefoner i forskjellige størrelser, må designene våre passe til enhver enhet i bredder fra 320px til potensielle 7680px.
Sammen med de mange skjermoppløsningene kommer behovet for å komprimere eller strekke bilder for å møte ulike krav. Dette kan være et problem pga med unntak av vektorgrafikk, har de aller fleste bilder en grunnbredde i px som ikke kan endres.
Så hva bør vi gjøre?
Gjeldende felles løsning
Vanligvis vil du finne denne koden på alle responsive nettsteder:
Img (maks-bredde: 100 %; høyde: auto;)
Dette bruker maks-bredde: 100 %; for å sikre at bildet aldri går utover bredden på den overordnede beholderen. Hvis den overordnede beholderen krymper til en bredde som er mindre enn bredden på bildet, krymper sistnevnte sammen med beholderen. Innstillingshøyde: auto; nødvendig for å opprettholde proporsjoner.
Ett "flytende" bilde for alle tilfeller
Problemet er løst på bare én måte, slik at vi kan vise det samme bildet for alle tilfeller. Men dette gir oss ikke mulighet til å etablere diverse bilder for ulike situasjoner.
Ny løsning:
Den implementerer en måte å beskrive responsive bilder på på samme måte som det er gjort i
Dette vil laste forskjellige bilder avhengig av:
- Resultatene av medieuttrykk, for eksempel høyden, bredden eller retningen til visningsporten
- Pikseltetthet
Dette betyr igjen at du kan:
- Last ned bildefiler av passende størrelse, effektivt ved å bruke båndbredden.
- Last forskjellig orienterte bilder i forskjellige proporsjoner for å imøtekomme endringer i layout ved forskjellige bredder.
- Last inn høyoppløselige bilder for skjermer med høy pikseltetthet.
Hvordan virker det
Grunnleggende steg når du arbeider med
- Lag åpnings- og avslutningstagger .
- Inne skape
- Legg til et medieattributt som inneholder uttrykk for ting som høyde og bredde, retning osv.
- Legg til et srcset-attributt med riktig filnavn for bildet som skal lastes.
- Legg til flere filnavn til srcset-attributtet hvis du trenger å støtte forskjellige pikseltettheter, for eksempel for Retina-skjermer.
- Legg til et reserveelement .
Her er et enkelt eksempel, der et mindre bilde lastes inn for saken når bredden på det synlige området er mindre enn 768px:
Du vil legge merke til at syntaksen som brukes i medieattributtet er den samme som når den brukes i CSS-mediespørringer. Du kan bruke de samme sjekkene, dvs. sjekk maks-bredde, min-bredde, maks-høyde, min-høyde, orientering, etc.
Disse sjekkene kan brukes til for eksempel å laste inn en liggende eller stående versjon av et bilde avhengig av enhetens orientering, og du kan også sjekke dimensjonene i disse uttrykkene samtidig. For eksempel:
Denne koden laster ned en nedskalert liggende versjon av et bilde for enheter med små skjermer i riktig retning. Og en større versjon av det samme bildet for enheter med stor skjerm.
Hvis enheten har en stående orientering, lastes den stående versjonen av bildet, forminskes for enheter med liten skjerm og forstørres for enheter med stor skjerm.
Hvis du ønsker å gjengi bilder med en annen oppløsning for visninger med høy pikseltetthet, kan du gjøre det ved å angi flere filnavn i srcset-attributtet. La oss ta en titt på vår første kodebit for å legge til prosessering for Retina 2x-skjermer, for eksempel:
Fordi medieforespørselen behandles først, du kan kontrollere størrelsen på bildet som det skal vises med på skjermen. Deretter vil pikseltettheten bli kontrollert: hvis skjermen støtter en høyere tetthet og i brukerinnstillingene er det en oppløsning for dette, vil de tilsvarende versjonene av bildene lastes inn.
Bruk
Innebygd støtte akkurat nå
I mellomtiden trenger du ikke vente hvis du vil bruke
Etter å ha lastet ned filen picturefill.js i prosjektet ditt, bare inkludere det i overskriften:
Det er også en mulighet for å laste skriptet asynkront, som du kan lese om i Picturefill-dokumentasjonen.
Når du bruker dette skriptet, vil elementet
Begrensninger for bildefylling
IE9
Picturefill fungerer fint med forskjellige versjoner av IE, men IE9 støtter ikke
Android 2.3
Som IE9, vises ikke Android 2.3
Krever JavaScript og innebygd støtte for Media Query
Derfor kreves det at JavaScript er aktivert i nettleseren. Picturefill 2.0 gir ikke en "no-js"-løsning, for hvis den gjør det, når nettleseren ruller ut opprinnelig støtte
Et annet krav til Picturefill er innebygd støtte for mediesøk for å tillate håndtering av uttrykk i medieattributtet. Alle moderne nettlesere støtter medieuttrykk, bare IE8 og under støtter dem ikke, noe som tilsvarer bare en liten brøkdel av brukerne.
Ytterligere HTTP-forespørsler er mulig
Det er mulig at i nettlesere som har innebygd støtte for srcset, men som ennå ikke har støtte for
Dette er bare et midlertidig problem, og det vil forsvinne så snart den innebygde støtten rulles ut.
Tilleggsinformasjon
- Les mer om Picturefill 2.0 og last det ned for prosjektet ditt fra denne siden.
- Se fullstendige varedetaljer
Prøv å bruke
Bilder har lenge vært kjent som det mest tidkrevende aspektet ved responsiv webdesign. I dag skal vi se hvordan bildeelementet kan brukes som en løsning på problemet med responsive bilder akkurat nå.
For det første selve problemet
Dagene med webdesign med fast bredde og full layout er for lengst forbi. I den nåværende epoken med widescreen-skjermer, Internett-TV, nettbrett og smarttelefoner i forskjellige størrelser, må designene våre ta hensyn til enhver oppløsning - fra 320 piksler til 7680 piksler.
Alle disse oppløsningene stiller krav til bilder – de må strekke seg og krympe for å imøtekomme en rekke krav. Dette kan være et problem pga med unntak av vektorgrafikk, har de fleste bilder en fast pikselbredde som ikke endres.
Så hva gjør du?
Den nåværende, mest vanlige løsningen
Vanligvis vil du finne følgende i CSS-en til nesten alle responsive nettsteder:
img (maks-bredde: 100 %; høyde: auto;)
img (maks - bredde: 100 %; høyde: auto;) |
Denne koden bruker innstillingen maks-bredde: 100 %; for å sikre at bildet ikke søles ut av den overordnede beholderen. Hvis den overordnede beholderen blir mindre enn bildets bredde, vil bildet krympe med den. Innstillingshøyde: auto; er tilstede slik at sideforholdet til bildet bevares ved reduksjon.
Ett gummiert bilde for alle enheter
Dette løser problemet på én måte, slik at vi kan vise det samme bildet under forskjellige omstendigheter. Men det tillater oss ikke å vise forskjellige bilder for forskjellige omstendigheter.
Ny løsning: bildelapp
picture er et nytt element som bør være en del av HTML5. Det vil øke hastigheten på prosessen med å plassere responsive bilder på en lignende måte som lyd- og videoelementene fungerer. Det vil tillate flere kildeelementer å spesifiseres, som hver vil peke til forskjellige bildefiler sammen med forholdene de skal lastes under.
Den lar deg laste opp forskjellige bilder avhengig av:
Mediespørringsresultater som høyde, bredde, retning
Pikseltetthet
Det betyr at du kan:
Last inn bilder av passende størrelse, og utnytte den tilgjengelige kanalbredden maksimalt.
Last inn bilder med forskjellige beskjærings- og sideforhold for å matche layoutendringer for skjermer med forskjellige bredder.
Last inn bilder med høy oppløsning for skjermer med høy pikseltetthet.
Ulike bilder lastes inn avhengig av omstendighetene
Hvordan fungerer bildeelementet?
De grunnleggende trinnene for å jobbe med bildeelementet er:
Lag åpnings- og avslutningsbildemerker.
Innenfor disse kodene oppretter du et kildeelement for hver forespørsel du vil gjøre.
Legg til et medieattributt i søket ditt for ting som høyde, bredde, retning osv.
Legg til et srcset-attributt med riktig filnavn for bildet som skal lastes.
Legg til flere filnavn til srcset-attributtet ditt hvis du vil støtte skjermer med høy pikseltetthet som Retina.
Legg til img-elementet som en reserve.
Her er et enkelt eksempel som sjekker om visningsporten er mindre enn 768 piksler og laster inn et mindre bilde hvis det samsvarer:
< picture > < source srcset = "smaller.jpg" media = "(max-width: 768px)" > < source srcset = "default.jpg" > < img srcset = "default.jpg" alt = "Mitt standardbilde" > < / picture > |
Du vil legge merke til at syntaksen som brukes i medieattributtet er nøyaktig den samme som den du er vant til når du skriver CSS-mediespørringer. Du kan bruke de samme sjekkene, noe som betyr at du kan opprette spørringer for maks-bredde, min-bredde, maks-høyde, min-høyde, orientering og så videre.
Du kan bruke disse kontrollene til å laste liggende eller stående versjoner av et bilde basert på enhetsorientering, og du kan også legge til størrelsesforespørsler. For eksempel:
< picture > < source srcset = "smaller_landscape.jpg" media = "(maks-bredde: 40 em) og (orientering: liggende)"> < source srcset = "smaller_portrait.jpg" media = "(maks-bredde: 40em) og (retning: portrett)"> < source srcset = "default_landscape.jpg" media = "(min-bredde: 40 em) og (orientering: landskap)"> < source srcset = "default_portrait.jpg" media = "(min-bredde: 40em) og (retning: portrett)"> < img srcset = "default_landscape.jpg" alt = "Mitt standardbilde" > < / picture > |
Koden ovenfor laster inn en nedskalert, beskåret liggende versjon av enhetsbildet i riktig retning. Den laster ned en større versjon av det samme bildet for enheter med stor skjerm.
Hvis enheten er i stående retning, laster den ned et passende beskåret bilde: mindre for mindre enheter og zoomet inn for enheter med høyere oppløsning.
Hvis du vil gi forskjellige oppløsningsversjoner av bilder for skjermer med høyere tetthet, kan du gjøre det ved å legge til flere filnavn til srcset-attributtet. La oss for eksempel ta en titt på det første kodeeksemplet ovenfor med tillegg av støtte for Retina 2x skjermoppløsning:
< picture > < source srcset = "smaller.jpg, smaller_retina.jpg 2x" media = "(maks-bredde: 768px)">< source srcset = > < img srcset = "default.jpg, default_retina.jpg 2x" alt = "(! LANG: Mitt standardbilde" > !}< / picture > |
Medieforespørselen behandles først, slik at du kan kontrollere størrelsen på bildet på skjermen. Deretter kontrolleres pikseltettheten til skjermen, og hvis den høye tettheten støttes og tillates av brukerinnstillingene, vil en versjon med høyere oppløsning av bildet lastes inn.
Bruker bilde i dag
Den opprinnelige implementeringen av bilde er for tiden under utvikling for nettleserne Chrome, Firefox og Opera, men i fremtiden vil vi sannsynligvis se bredere støtte også i andre nettlesere. Men per i dag forventes det kun støtte.
Foreløpig trenger du ikke vente hvis du vil begynne å bruke bilde nå. Du trenger bare å bruke Picturefill 2.0, en polyfill levert av Filament Group-utviklerne.
Etter at du har lastet ned picturefill.js til prosjektet ditt, kan det brukes ved å laste det inn i hoveddelen av nettstedet ditt:
|
Det er også mulig å laste skriptet asynkront for større effektivitet, noe du kan lese om i Picturefill-dokumentasjonen. Sammen med lasting av dette skriptet, vil bildeelementet fungere som jeg beskrev, med noen få begrensninger. ] ->< source srcset = "smaller.jpg" media = "(max-width: 768px)" > < source srcset = "default.jpg" > < ! -- [ if IE 9 ] > < / video > < ! [ endif ] -- > < img srcset = "default.jpg" alt = "Mitt standardbilde" > < / picture >
Android 2.3
I likhet med IE9 ser ikke Android 2.3 kildeelementer i bildekoder. Den gjenkjenner imidlertid srcset-attributtet når den tildeles til en vanlig img-tag. Pass på at du inkluderer et reserve-img-element med et standard filnavn i srcset-attributtet for Android 2.3 eller en annen nettleser med lignende problem.
JavaScript og innebygd støtte for mediespørringer kreves
Siden denne løsningen er implementert i JavaScript, trenger den derfor JavaScript for å fungere korrekt i nettleseren. Picturefill 2.0 gir ikke en "no-js"-løsning, fordi ellers ville det dukket opp mange bilder på sidene når native support ble implementert. Du kan imidlertid bruke Picturefill 1.2 hvis "no-js"-funksjonen er viktig for deg.
Picturefills neste krav er innebygd støtte for mediespørringer for at forespørsler i medieattributtet skal fungere. Alle moderne nettlesere støtter mediespørringer, mens IE8 og under er den eneste nettleseren som ikke støtter med en liten gjenværende brukerbase.
Ytterligere HTTP-forespørsler er mulig
For nettlesere som har innebygd støtte for srcset, men som ikke støtter bilde, kan det hende at det spesifiserte filnavnet i reserve-img-elementet kan bli forespurt før et mer passende bilde spesifiseres i img-elementet. Dette problemet er midlertidig og vil bli løst når innfødt støtte for bilde er implementert.