2013-07-08 26 views
0

我試圖做一個WP插件,它將從整個數據庫和一個指定的類別中隨機顯示PrestaShop產品。Prestashop - 外部應用程序的圖像路徑重新構建

我需要重新構建具有產品ID的產品的圖像路徑

我試過了一個SQL查詢,但沒有幫助我爲正確的產品構建正確的映像的正確路徑。

SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend` FROM [DB_PREFIX]product p 
LEFT JOIN `[DB_PREFIX]product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = [ID_LANG]) 
LEFT JOIN `[DB_PREFIX]image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) 
LEFT JOIN `[DB_PREFIX]image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = [ID_LANG]) 

圖片的絕對路徑是:website.com/img/p/

然後在URL中的數字給出的路徑圖。

因此,與website.com/5-medium_atch/product-name.jpg圖片的路徑是

website.com/img/p/5/5-medium_atch.jpg

website.com/145-home_atch/product-name.jpg路徑是

website.com/img/p/1/4/5/145-home_atch.jpg

我使用prestashop版本1.5.4.1和WP 3.5.2

歡迎任何建議。謝謝。

+0

是很困難的,你要麼必須添加的Prestashop URL重寫使用Web服務來做到這一點的系統鏈路控制器。由於有兩個圖像路徑生成,當seo鏈接禁用另一個是soe鏈接啓用時。所以最好在prestashop中創建一個模塊,並使用wp插件的查詢字符串進行引發,並顯示該產品。 –

+0

@arifurrahman感謝您的信息。我想過這種方法,但對我來說看起來並不可靠。用戶設置太多。在下一個WP插件版本中,我將連接到PS DB,並讓用戶將所需產品導入爲自定義帖子類型,並從WP DB進行隨機顯示。它也會減少加載時間。 –

回答

0

我終於做到這一點:

從插件設置獲取這些:

$product_name = $PrestaShopdb->get_var('SQL here'); 
$store_url 
$image_folder 

$id_image = $PrestaShopdb->get_var(' 
     SELECT i.`position` FROM ps_product p 
     LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.$language.') 
     LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) 
     LEFT JOIN `ps_image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.$language.') 
     WHERE p.`active` = 1 
     AND p.`id_product` = '.$product_id.''   
     );   

$image_path = $image_folder . "/". $product_id . "/".$id_image."/" . $product_id.$id_image."-" . $image_size."_default.jpg"; 

if(!url_exists($image_path)){ //check if file exist? Function is below 
    $image_path = $image_folder . "/". $product_id ."/" . $product_id."-" . $image_size."_default.jpg"; 
}else{ 
    $image_path = $image_path; 
} 


function url_exists($url) { 
    // Version 4.x supported 
    $handle = curl_init($url); 
    if (false === $handle) 
    { 
     return false; 
    } 
    curl_setopt($handle, CURLOPT_HEADER, false); 
    curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
    curl_setopt($handle, CURLOPT_NOBODY, true); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
    $connectable = curl_exec($handle); 
    curl_close($handle);  
    return $connectable; 
} 

它看起來更像是一個臨時的解決方案,以我的問題,但現在做的工作。

+0

這意味着你將檢查圖像文件夾的名稱,而不是build.If語言和seo網址啓用了你如何管理它。您可以使用Web服務或通過rss獲取產品信息。 –

0

我認爲最好的方式找到的Prestashop圖像文件夾路徑

$oImage = new Image($iImg_id); 
$sPath = _PS_PROD_IMG_DIR_.$oImage->getExistingImgPath().'.'.$oImage->image_format; 
相關問題