Προσοχή !!! Το άρθρο αυτό απευθύνεται σε προχωρημένους χρήστες με γνώσεις PHP , ειδικά σε ευαισθητα θέματα e-shop απευθυνθείτε σε ειδικό για τις αλλαγές !!!
Βλέπετε τον πλήρη κώδικα για ένα open source module σε php που παράγει το xml για skroutz.gr και bestprice.gr
Το μόνο που πρέπει να αλλάξει κάποιος είναι το example με το όνομα από το κατάστημα του.
Είναι για prestashop 1.7 .
Το συγκεκριμένο είναι για μαγαζί με εσώρουχα. Οπότε έχουμε μέγεθος σουτιέν που είναι συνδυασμός δύο μεγεθών.
Με λίγες αλλαγές μπορεί να το βάλει κάποιος σε ότι κατάστημα θέλει.
Preview:
<?php
$databaseConfig = include 'app/config/parameters.php';
$servername = $databaseConfig[parameters][database_host];
$username = $databaseConfig[parameters][database_user];
$password = $databaseConfig[parameters][database_password];
$database = $databaseConfig[parameters][database_name];
// Create connection
$link = mysqli_connect("$servername", "$username", "$password", "$database");
//set charset
mysqli_set_charset($link, "utf8");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "select
p.id_product as Product_id,
concat(m.name,' ',pl.name) as Product_name,
group_concat(distinct case when agl.id_attribute_group <> '6' and agl.id_attribute_group <> '5' and agl.id_attribute_group <> '4' then pal.name else null end order by agl.id_attribute_group desc separator ',') AS size,
group_concat(case when agl.id_attribute_group = '5' or agl.id_attribute_group = '4' then pal.name else null end order by agl.id_attribute_group desc separator ',') AS bra_size,
group_concat(distinct case when agl.id_attribute_group = '6' then pal.name else null end order by agl.id_attribute_group desc separator ',') AS color,
sa.quantity as quantity,
round((p.price-(p.price*sp.reduction))*1.24,2) as Price,
p.reference as MPN,
m.name as manufacturer,
concat('https://','example.gr','/el/',cl.link_rewrite,'/',p.id_product,'-',pac.id_product_attribute,'-',pl.link_rewrite,'.html') as Product_Link,
concat( 'https://example.gr/img/p/',mid(im.id_image,1,1),'/',
if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),
if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),
if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),
if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,
(select group_concat('https://example.gr/img/p/',mid(im2.id_image,1,1),'/',
if (length(im2.id_image)>1,concat(mid(im2.id_image,2,1),'/'),''),
if (length(im2.id_image)>2,concat(mid(im2.id_image,3,1),'/'),''),
if (length(im2.id_image)>3,concat(mid(im2.id_image,4,1),'/'),''),
if (length(im2.id_image)>4,concat(mid(im2.id_image,5,1),'/'),''), im2.id_image, '.jpg' separator ',')
from ps_image as im2
where im2.position > '1' and im2.id_product = p.id_product) AS extra_images,
(select group_concat(cl.name order by c2.level_depth asc separator ' > ')
from ps_category_lang as cl
join ps_category as c2 on c2.id_category = cl.id_category
where c2.nleft <= c.nleft and c2.nright >= c.nright and cl.id_lang= '2' and c2.id_category > '2') as category_path
from ps_product as p
left join ps_category_lang as cl on cl.id_category = p.id_category_default and cl.id_lang = '2'
left join ps_product_lang as pl on pl.id_product = p.id_product
left join ps_stock_available as sa on sa.id_product = p.id_product
left join ps_category as c on c.id_category = p.id_category_default
left join ps_manufacturer as m on p.id_manufacturer = m.id_manufacturer
left join ps_image as im on im.id_product = p.id_product and im.position = '1'
left join ps_product_attribute as pa on p.id_product = pa.id_product
left join ps_product_attribute_combination as pac on pac.id_product_attribute = pa.id_product_attribute
left join ps_attribute_lang as pal on pal.id_attribute = pac.id_attribute and pal.id_lang = '2'
left join ps_attribute as a on a.id_attribute = pal.id_attribute
left join ps_attribute_group_lang agl on agl.id_attribute_group = a.id_attribute_group and agl.id_lang = '2'
left join ps_specific_price as sp on sp.id_product = p.id_product
where pl.id_lang = '2' and p.active = '1' and sa.id_product_attribute = pa.id_product_attribute
group by p.id_product
order by p.id_product;";
header("Content-Type:text/xml; charset=utf-8");
print '<?xml version="1.0" encoding="UTF-8"?>';
print '<example>';
print '<created_at>' . date("Y-m-d H:m") . '</created_at>';
print '<products>';
/*
if ($result = mysqli_query($link, $sql)) {
printf("Select returned %d rows.\n", mysqli_num_rows($result));
}
*/
$result = mysqli_query($link, $sql);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysqli_error($link) . "\n";
$message .= 'Whole query: ' . $sql;
die($message);
}
while ($row = $result->fetch_object()) {
$availabilty="Κατόπιν Παραγγελίας";
$instock="N";
$quantity=$row->quantity;
if($quantity > 0) {
$availabilty="Παράδοση 1 έως 3 ημέρες";
$instock="Y";
}
$colors=$row->color;
$color=explode(",", $colors);
$temp_size=$row->size;
if(!empty($temp_size)){
$size = $temp_size;
}else {
$temp_brasizes = $row->bra_size;
$brasizes = explode(",", $temp_brasizes);
$size_elements = count($brasizes);
$size="";
for($i=0; $i<=($size_elements/2)-1; $i++) {
if($i < ($size_elements/2)-1){
$size= $size . $brasizes[$i] . $brasizes[$i+($size_elements/2)] . ',';
}else{
$size= $size . $brasizes[$i] . $brasizes[$i+($size_elements/2)];
}
}
}
$temp_name=$row->Product_name;
if (strpos(strtolower($temp_name), strtolower($color[0])) !== false) {
$name=$temp_name;
}else{
$name=$temp_name . ' ' . $color[0];
}
$im_count=0;
$temp_extra_images=$row->extra_images;
if(!empty($temp_extra_images)){
$extra_image = explode(",", $temp_extra_images);
$im_count=count($extra_image);
}
print '<product>';
print '<id>' . $row->Product_id . '</id>';
print '<name><![CDATA[' . $name . ']]></name>';
print '<link><![CDATA[' . $row->Product_Link . ']]></link>';
print '<image><![CDATA[' . $row->Image_Link . ']]></image>';
if($im_count>0) {
for($i=0; $i<=$im_count-1; $i++) {
print '<additional_image><![CDATA[' . $extra_image[$i] . ']]></additional_image>';
}
}
print '<category><![CDATA[' . $row->category_path . ']]></category>';
print '<price_with_vat>' . $row->Price . '</price_with_vat>';
print '<mpn>' . $row->MPN . '</mpn>';
print '<manufacturer><![CDATA[' . $row->manufacturer . ']]></manufacturer>';
print '<instock>' . $instock . '</instock>';
print '<color>' . $color[0] . '</color>';
print '<size>' . $size . '</size>';
print '<availability>' . $availabilty . '</availability>' ;
print "</product>";
}
print "</products>";
print "</example>";
/* free result set */
mysqli_free_result($result);
mysqli_close($link);
?>
Συγγραφέας sanctusmob
Resource https://www.prestashop.com/forums/
Για ότι απορίες έχετε σχετικά με τον κώδικα απευθυνθείτε στο ειδικό για αυτό το θέμα foroum στο παραπάνω link
Prestashop Tuorials
- Prestashop template pages
- Prestashop Debug
- Prestashop Hooks
- Prestashop Database schema
- Set a URL with link for features of a product
- Disable currency in front office
- Add product features to product list
- Prestashop Database Structure
- Disable standby to save products in PrestaShop 1.6
- Restricting age to minimum 18 years in registration form
- Add product images to mail order confirmation
- Update product Stock with 0 quantity when import with CSV
- Add filter by Newest in product list
- Disable responsive theme on mobile devices in PrestaShop
- Display youtube / vimeo video on PrestaShop Image Slider
- Avoid spam in module Send to a friend
- Do not apply cart rule if a product belongs to a category X
- Debug mode in PrestaShop just for us
- Change currency position and symbol in PrestaShop 1.7
- Show order total in checkout in PrestaShop 1.7
- Add price final (with discounts) in PrestaShop 1.7 admin product list
- Solve slow Back Office on PrestaShop
Bonus Περιεχόμενο
Μια λίστα με δωρεάν χρήσιμα πρόσθετα τα οποία μας διευκολύνουν την ζωή και γενικά την λειτουργία του καταστήματος μας.
Έτσι δημιουργώντας αυτή την λίστα, καινούργιοι χρήστες αλλά και παλιοί της πλατφόρμας θα έχουν μια συγκεντρωτική λίστα για να μην ψάχνονται σε όλο το forum ή σε άλλα forum.
- callmeback Πρόσθετο όπου δίνει την δυνατότητα στον πελάτη να αφήσει το τηλέφωνο του για να τον πάρετε τηλέφωνο εσείς. by 01generator
- Facebook Open Graph module Πρόσθετο για facebook open graph meta tags. by 01generator
- Slides Everywher Για προσθήκη banner, gallery, slideshow σε διάφορα σημεία στο σιτε μας (by @irmaiden) by 01generator
- Export Products για να κάνεις γρήγορα export τα Products σου σε csv (by @George Bazz) by 01generator
- Greeklish-slug για να μετατρέπει τα link_rewrite απο ελληνικούς χαρακτήρες σε latin (by @eyaggelos)
- EUCookie για european cookie law (δεν καλύπτει GDPR) by @vekia αναφέρθηκε από @helpdeskED
- Export Products Εξαιρετικό προγραμματάκι για να κάνεις γρήγορα export τα Products σου σε csv. Αντίθετα με το Prestashop (που κάνει export μόνο 5-6 fields), το συγκεκριμένο module κάνει export όλα τα fields του κάθε προιόντος
- Facebook Open Graph module Να ένα καλό και δωρεάν πρόσθετο για τα Facebook open graph meta tags.
- Sliders Everywhere Για προσθήκη banner, gallery, slideshow σε διάφορα σημεία στο σιτε μας. ΤΟ θεωρώ κορυφαίο...
- codwfeeplus_1.0.9.zip πρόσθετο για αντικαταβολή με χρέωση
- skroutzanalytics.zip Module για σύνδεση με την υπηρεσία Skroutz Analytics (https://developer.skroutz.gr/analytics/).
- https://github.com/vgoritsas/Greeklish-Slug Αυτόματη δημιουργία greeklish URL από το όνομα του προϊόντος
- blockreassurance.zip Το παρακάτω είναι το blockreassurance του prestashop στο οποίο έχω βάλει description στο backend και modal στο frontend γιατί δεν μου άρεσε το αρχικό. Το έκανα λίγο στα γρήγορα οπότε μπορεί να υπάρχουν bugs. Δοκιμασμένο σε PS 1.7.3.0
- Slide captcha https://catalogo-onlinersi.net/en/add-ons-prestashop-modules/264-slide-captcha-prestashop-module.html
- Debug on - off https://catalogo-onlinersi.net/en/back-office-prestashop-modules/304-debug-prestashop-module.html Στο ίδιο site έχει αρκετά χρήσιμα δωρεάν Modules. Τα παραπάνω τα χρησιμοποιώ συχνά.
- Module που προσθέτει έξτρα κόστος στην αντικαταβολή https://www.prestashop.com/forums/topic/75458-module-cash-on-delivery-cod-v05-with-fixed-and-percentage-fees/
- δωρεάν πρόσθετο ..... uecookie Προσοχή, ενδέχεται να μην λειτουργεί στις τελευταίες εκδόσεις του 1.7
- https://github.com/vgoritsas/Hooks-Manager-prestashop-17x Eνα νέο πρόσθετο να μπορείτε να διαχειριστείτε τα hooks από το back office του prestashop.μπορείτε να προσθέστε, αφαιρέστε & να επεξεργαστείτε Prestashop version 1.7x np_hooksmanager.zip by eyaggelos
- https://catalogo-onlinersi.net/en/30-tutorials-ebooks Εδώ θα βρείτε δωρεάν βιβλία πρόσθετα και Templates απαιτείται η δημιουργία account
ΠΡΟΣΟΧΗ !!! Για προχωρημένους με γνώσεις HTML & PHP
Πώς μπορεί στο eshop του να βάζει & τιμή καταστήματος. Δουλεύει σε prestashop 1.7x.
---
Κάνετε εγκατάσταση το module.
Μετά αυτό που χρειάζεται να κάνετε είναι να ανοίξετε το αρχείο product.tpl
domain_name_root\themes\THEME_NAME\templates\catalog\product.tpl
line 84 κάπου εκεί τοποθετήστε
{hook h='displayStorePrice' product=$product}
{block name='product_prices'}
{include file='catalog/_partials/product-prices.tpl'}
{hook h='displayStorePrice' product=$product}
{/block}
Χορηγός: mixanikos365 διακριτικά στο τέλος του άρθρου χωρίς συνεχείς διαφημήσεις και αναδυόμενα παράθυρα
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
Thank you for contacting us