Simbol & v imenu proizvajalca

Torej, fanjte iz Ceneje.si pravijo, da se artikli ne morejo sinhronizirati, ker naj bi metalo ven error zaradi znaka & v imenu proizvajalca, npr. Black & Decker.
Citiram email:
""Napaka o kateri sva prej govorila se ne pojavlja več v izvozu se je pa pojavila napaka pri vseh Black & Decker izdelkih, ker znak & ni pravilno nadomeščen moral bi biti takole: &
In samo v polju <g:brand>.
Primer:
· Trenutno: <g:brand>Black & Decker /g:brand
· Pravilno: <g:brand>Black & Decker /g:brand
""
Opencart sistem šifre "&" ob vnosu v polje imena proizvajalca ne spremeni v &, zato kot že mnogokrat sprašujem mojstre računalniških jezikov in opencarta kaj mi je storiti.

Verjetno imam spet rešitev pred nosom, a kaj ko je očitno ta nos kot od Valiča...

5 odgovorov

V export skripti boš moral encodati posebne znake z htmlspecialchars:http://php.net/manual/en/function.htmlspecialchars.php

3

Torej, če laično razumem, moram nadomestiti v googlebase.php del (ojačan) kode:
$output .= '<g:brand>' . html
entitydecode($product['manufacturer'], **ENTQUOTES, 'UTF-8') . '/g:brand';
ojačan del se spremeni v "ENTHTML5" in dobiš:
$output .= '<g:brand>' . html
entitydecode($product['manufacturer'], ENTHTML5, 'UTF-8') . '/g:brand';
Preveč lahko se mi zdi... **cruiser
delam prav? :)

htmlentitydecode je ravno obratno od tega kar bi ti rad dosegel.
Poizkusi za začetek kar odstranit htmlentitydecode:
$output .= '<g:brand>' . $product['manufacturer'] . '/g:brand';

Če ne bo dovolj (odvisno je od tega, v kaki obliki je shranjen manufacturer) pa dodaj htmlspecialchars funkcijo:
$output .= '<g:brand>' . htmlspecialchars($product['manufacturer']) . '/g:brand';

Še vedno pa obstaja tretja možnost, da kar direkt samo & skonvertiraš:
$output .= '<g:brand>' . strreplace("&", "&",htmlentitydecode($product['manufacturer'], ENTQUOTES, 'UTF-8')) . '/g:brand';

1

dodaj še CDATA tag
$output .= '<g:brand><![CDATA[' . $product... . ']]>/g:brand';

1

Zahvaljujem se obema, zadeva spet funkcionira :)
Pivo v dobrem.