Links

Câteva linkuri interesante de pe twitter.


Implementare ‘cumpără 2 produse iar al 3-lea îl primeşti gratis’ în Magento

Implicit Magento nu are opţiunea din titlu inclusă, sau cel puţin nu în versiunea 1.7 pe care am testat eu. Există ceva asemănător, cumperi 2 produse iar al 3-lea e gratuit, dar este vorba de acelaşi produs. În cazul de faţă am nevoie ca la oricare 3 produse în coş,  al 3-lea cel mai ieftin să fie gratuit.

La o căutare pe google am găsit o soluţie care aplică un discount fix sumei din coş, soluţie preluată de aici.

La codul din Observer.php am adăugat modificări astfel încât reducerea să nu fie fixă ci să fie 2 + 1 unde produsul gratuit e cel mai ieftin produs aflat în coş. la 6 produse avem 4 + 2 gratis se iau 2 cele mai ieftine, se aplică discount la coş cu suma preţului lor, şi tot aşa.

[…]

$discountAmount= 0; 
$counter = 0;
$arritemsval = array();
foreach($quote->getAllItems() as $item){

 

for($i=0;$i<$item->getQty();$i++)
{
$arritemsval[$counter] = $item->getPriceInclTax();
$counter++;
}

}

sort($arritemsval);

$itemstodiscount = intval($counter/3);

for($j=0;$j<$itemstodiscount;$j++)
{
$discountAmount += $arritemsval[$j];
}

if($quoteid) {

[…]

Soluţia se poate modifica în 1+1 gratis (al 2-lea produs, cel mai ieftin, gratuit) schimbând cifra 3 cu 2

$itemstodiscount = intval($counter/2);


Magento – ordonare după preţul redus

Implicit în Magento (cel puţin în versiunea 1.7) la ordonarea produselor după preţ într-o categorie se ia preţul întreg. În cazul în care avem un produs cu preţ redus, acest preţ redus nu este luat în considerare la ordonare, ci se ia preţul întreg.

Pentru a ordona după preţ asc / desc ţinând cont şi de preţul redus dacă acesta există, a trebuit să modific într-un fişier din core.

/app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php

În acest fişier este funcţia setCollection() unde se află următorul cod

if ($this->getCurrentOrder()) {
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
}

pe care l-am înlocuit cu

if ($this->getCurrentOrder()) {
if($this->getCurrentOrder() != 'price')
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
else
$this->_collection->getSelect()->order(array('COALESCE(`e`.`special_price`,`price_index`.`min_price`) '.$this->getCurrentDirection()));
}

aici verific dacă parametrul get ‘order’ are valoarea ‘price’, adică dacă avem o ordonare după preţ. În caz afirmativ, înlocuiesc order by-ul implicit după preţul normal.


Links

Luna aceasta, JavaScript a împlinit 18 ani.

Traficul generat de boţi reprezintă 61.5% din tot traficul site-ului, potrivit unui studiu.

31% din veniturile Yahoo provin de la Microsoft. Compania plateşte Yahoo pentru folosirea motorului de căutare Bing.

20% din traficul global de internet reprezintă accesul de pe telefoanele mobile.

http://motherfuckingwebsite.com

Cele mai bune ţări în care poate trăi un developer.

Seturi de iconiţe gratuite.

Jumătate din calculatoare vândute în 2014 vor fi tablete.


Development: Mobile vs Desktop

550691_474824402538914_1505441917_n Acum mulţi ani navigarea pe internet se facea de pe un PC iar website-urile prezentau informaţii simple. Odată cu apariţia smartphone-urilor şi creşterea complexităţii site-urilor a apărut şi problema afişării conţinutului pe multitudinea de device-uri existente precum şi problema mărimii în kb a website-ului deci implicit a vitezei de încărcare.

Ca urmare se doreşte afişarea unui conţinut lightweight pe mobil şi a altuia pe desktop. Care ar fi soluţiile afişării unui conţinut diferit pe mobile sau desktop-uri?

Css Media Queries pentru a afişa diferit în funcţie de rezoluţie. E ok până la un punct. Mai nou, ultimele versiuni de iPhone si Samsung galaxy au rezoluţii peste 1000 px, aproximativ cât un monitor desktop, aşadar cum faci diferenţa dintre desktop şi mobil? (Câteva snippet-uri media queries pentru device-uri populare).

User Agent Sniffing, o metodă blamată de mulţi, se face în JS prin verificarea identificatorului celui care intră pe pagină. Ce faci dacă apare un nou telefon sau un nou browser cu un alt user agent?

Iată o listă cu rezoluţiile disponibile pe diferite terminale mobile. Dupa cum se observă, sunt o gramadă de rezoluţii, şi mai nou nu prea poţi face diferenţa dintre mobil şi desktop.

O soluţie 100% nu este. Ideal ar fi ca website-ul sa fie atât de bine optimizat astfel încât să nu fie nevoie de o versiune separată pentru mobile. Cam greu.

Câteva articole pe această temă:


PHP mysql_query() deprecated

php-logoAstazi am observat ca funcţia mysql_query(), extrem de folosită pentru interogari ale bazelor de date, va fi scoasă în versiunile viitoare de PHP. Odata cu lansarea PHP 5.5 acum o luna, mysql_query() & related sunt oficial ‘deprecated’ – link ce conţine câteva detalii despre lipsurile mysql_query in raspuns (un alt răspuns bun aici). Asadar, este descurajata folosirea acestei functii in viitor si inlocuirea ei in cod. O alternativa este accesul folosind PDO (PHP Data Objects), metoda care este explicata mai pe larg in acest articol.

Modificarile in PHP 5.5 se pot gasi aici.


Links 21.12.12

5000 retweet-uri pentru că a răspuns unui troll
Tom Anderson este co-fondator a reţelei de socializare MySpace, pe care a vândut-o acus câţiva ani primind o sumă frumuşică. Pe contul său de twitter postează rar nişte fotografii care primesc 5-15 retweet-uri dar când un troll l-a atacat, răspunsul lui Tom a primit 5000 de retweet-uri, iar atacatorul şi-a şters într-un final contul. Tom a continuat experimentul şi a observat că utilizatorilor le plac luatul la mişto sau certurile mai mult decât nişte banale poze sau tweet-uri neinteresante.

Întreaga poveste aici.

tomconvo

Mai multe formate de imagini pe web
Mărimea unei pagini web este dată în principal de imaginile prezente, acestea ocupând cel mai mult spaţiu şi generând automat cel mai mult trafic. Majoritatea imaginilor în momentul de faţă sunt JPG-uri, PNG-uri sau GIF-uri. Dar dacă s-ar introduce noi formate mult mai optimizate care să le înlocuiască pe cele existente? Iată un articol care tratează această idee.

2 lei pentru Discovery
RDS ieftineşte abonamentele după scoaterea din grilă a posturilor Discovery. link.
Comunicatul de presă RDS aici.


Building Faster Websites

La o conferinţă despre tehnologiile web organizată recent, mai mulţi specialişti au prezentat informaţii utile în materie de web development. Un angajat Google a dat share la un document ce conţine sfaturi despre optimizarea paginilor web. Documentul este defapt prezentarea de 3 ore pe care a susţinut-o la conferinţă.

Documentul se poate accesa aici.


HTML5 în 2014

Grupul W3C ce se ocupă de realizarea specificaţiilor HTML5 şi-a propus ca în 2014 acest standard să fie gata. Iniţial specificaţiile HTML5 trebuiau să fie gata în 2022 (!). Anumite facilităţi care nu sunt stabile până la lansarea HTML5 vor fi incluse în următoarele versiuni, HTML5.1 urmând să fie lansat în 2016. Majoritatea browserelor au implementat unele dintre facilităţile HTML5.

Câteva funcţionalităţi HTML5 interesante aici.


jQuery rulează pe jumătate din website-uri

Cea mai populară librărie JavaScript rulează pe 50% din site-uri. În 7 ani jQuery a ajuns să fie cea mai populară librărie, întrecând rivali ca MooTools. Aceştia se află la mare depărtare de jQuery când vine vorba de cota de piaţă. În 2011, jQuery a fost tehnologia web cu cea mai rapidă creştere. Prin comparaţie, celelalte tehnologii web care ajută programatorii web să dezvolte site-uri interactive au o cotă de piaţă mult mai mică, cum ar fi Flash cu o cotă de 23% sau Silverlight de la Microsoft cu 0.3%.

Multe site-uri folosesc mai multe librării JavaScript deodată.

Mai multe detalii aici.