次の記事の助けを借りて、magento の製品リストをジオロケーション データで並べ替えようとしました: https://developers.google.com/maps/articles/phpsqlsearch_v3?hl=hu-HU。
モジュールの Mage_Catalog_Block_Product_List をオーバーライドして、次のコード行に到達できるようにしました。
$this->_productCollection = $layer->getProductCollection();
_productCollection オブジェクトを取得したら、数式を「仮想」属性「距離」として追加して、クエリを並べ替えることができるようにします。これが私が考えていることです:
$this->_productCollection = $layer->getProductCollection()
->addAttributeToSelect('distance','I insert my custom formula here')
->addAttributeToSort('distance','DESC');
この種の構文を処理するように API が作成されていないことは知っていますが、人々がアイデアを得るのに役立つと思います。
追加したい式は次のとおりです。
SELECT ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS距離
それを行う方法はありますか?