Jump to content
thirty bees forum

Adik

Trusted Members
  • Posts

    106
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Adik

  1. Great, is it possible to use with v7.0.0? On the official website I can not find the installer for version 6.3.0.
  2. Adik

    WebP image format

    Thank you Petr, do not forget about expires of webp files: location ~* \.(eot|ttf|woff|eof|woff2|css|js|jsonp|jpg|jpeg|gif|png|ico|svg|webm|mp3|mp4|webp)$ { add_header Access-Control-Allow-Origin *; # ~ 10 Days expires 604800s; }
  3. I wonder how to improve the pagespeed results (mobile devices) on the default Thirtybees template. At the moment I am using a VPS server, hosting hetzner.de, localization Nuremberg (Germany): 4 vCPU's, 16GB RAM, 80GB NVMe SSD. Clean installation of TB 1.0.8 + sample products and categories. Speed results: 98 points for computers, only 68 points for mobile devices. Demo store on https://front.thirtybees.com/ gets 100 points for computers and 98 points for mobile dev. My configuration: Debian 9.8 nginx/1.15.12 PHP 7.2.17-1 Memory limit: 128M Max execution time: 30s Smarty enabled + Force compilation + Type of caching: file system CCC enabled (keycdn.com) Memory cache enabled (APC) Here is my nginx config: server { listen *:80; listen *:443 ssl http2; ssl_certificate_key /etc/nginx/ssl/mysite.com.key; ssl_certificate /etc/nginx/ssl/mysite.com.pem; ssl_protocols TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; ssl_dhparam /etc/nginx/ssl/dhparam.pem; server_name mysite.com www.mysite.com; root /var/www/mysite/public_html; access_log /var/www/mysite/logs/access.log; error_log /var/www/mysite/logs/error.log; index index.html index.htm index.php; client_max_body_size 60M; fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last; rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last; rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last; rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last; rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last; rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last; rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last; rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$1$2$3.webp break; rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$1$2$3$4.webp break; rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$3/$1$2$3$4$5.webp break; rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.webp break; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.webp break; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.webp break; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.webp break; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.webp break; rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ /img/c/$1$2$3.webp break; rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.webp$ /img/c/$1$2.webp break; try_files $uri $uri/ /index.php$is_args$args; add_header Strict-Transport-Security max-age=31536000; resolver 127.0.0.1; location ~* \.(eot|ttf|woff|eof|woff2|css|js|jsonp|jpg|jpeg|gif|png|ico|svg|webm|mp3|mp4|webp)$ { add_header Access-Control-Allow-Origin *; # ~ 10 Days expires 604800s; } location ~ \.tpl { deny all; } ######### ## PHP ## ######### location ~ [^/]\.php(/|$) { fastcgi_index index.php; include /etc/nginx/fastcgi_params; # depending on version, could be : include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
  4. Hello Petr, I will prepare a subdomain with test shop and send details to your e-mail.
  5. Adik

    WebP image format

    Petr, could you share your nginx.conf section for webp support? is that enough? map $http_accept $webp_extension { default ""; "~*webp" ".webp"; }
  6. Double check this line in your config /etc/apache2/sites-available/... <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/" </FilesMatch>
  7. Hello, Which version of PHP do you have installed on your VPS? I prefer nginx, after upgrade to php 7.2 I had to change the entry php5.3-fpm.sock to php7.2-fpm.sock in nginx config file (sites-available directory). I recommend nginx, along with php-7.2 the store works very fast. location ~ [^/]\.php(/|$) { fastcgi_index index.php; include /etc/nginx/fastcgi_params; # depending on version, could be : include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
  8. I have similar problem as spidawebs. Despite activating the module and adding my IP the module does not work. I see only the menu and footer.
  9. Hi, Where can I delete the entry ?categories= from CMS page? At the moment I have: about-us.html?categories= terms-and-conditions-of-use.html?categories= Thanks.
  10. @adik said in Version 1.0.4 has been released: After upgrade from 1.0.3 to 1.0.4 no errors in admin panel. But I have been struggling with one problem since end of February. I remember that there was an update at the time. Despite the new orders, the chart stats in Desktop is not updated. Here's the solution that works for me: https://forum.thirtybees.com/topic/1720/stats-do-not-show-orders-and-carts-correctly-tb-1-0-4 The only problem I have today is with 10 best-selling products. The list does not update from January 2018.
  11. Hello, I think only orders that have invoice counts. Please check this solutions: touch file /override/controllers/admin/AdminStatsController.php with below code. After this delete /cache/class_index.php. ``` <?php class AdminStatsController extends AdminStatsControllerCore { public static function getTotalSales($datefrom, $dateto, $granularity = false) { if ($granularity == 'day') { $sales = array(); $result = Db::getInstance(PSUSESQLSLAVE)->ExecuteS(' SELECT LEFT(date_add, 10) as date, SUM(totalpaidtaxexcl / o.conversionrate) as sales FROM '._DB_PREFIX_.'orders o LEFT JOIN '._DB_PREFIX_.'order_state os ON o.currentstate = os.idorderstate WHERE date_add BETWEEN "'.pSQL($datefrom).' 00:00:00" AND "'.pSQL($dateto).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY LEFT(date_add, 10)'); foreach ($result as $row) { $sales[strtotime($row['date'])] = $row['sales']; } return $sales; } elseif ($granularity == 'month') { $sales = array(); $result = Db::getInstance(PSUSESQLSLAVE)->ExecuteS(' SELECT LEFT(date_add, 7) as date, SUM(totalpaidtaxexcl / o.conversionrate) as sales FROM '._DB_PREFIX_.'orders o LEFT JOIN '._DB_PREFIX_.'order_state os ON o.currentstate = os.idorderstate WHERE date_add BETWEEN "'.pSQL($datefrom).' 00:00:00" AND "'.pSQL($dateto).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY LEFT(date_add, 7)'); foreach ($result as $row) { $sales[strtotime($row['date'].'-01')] = $row['sales']; } return $sales; } else { return Db::getInstance(PSUSESQLSLAVE)->getValue(' SELECT SUM(totalpaidtaxexcl / o.conversionrate) FROM '._DB_PREFIX_.'orders o LEFT JOIN '._DB_PREFIX_.'order_state os ON o.currentstate = os.idorderstate WHERE date_add BETWEEN "'.pSQL($datefrom).' 00:00:00" AND "'.pSQL($dateto).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o')); } } public static function getOrders($date_from, $date_to, $granularity = false) { if ($granularity == 'day') { $orders = array(); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT LEFT(`date_add`, 10) as date, COUNT(*) as orders FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY LEFT(`date_add`, 10)'); foreach ($result as $row) { $orders[strtotime($row['date'])] = $row['orders']; } return $orders; } elseif ($granularity == 'month') { $orders = array(); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT LEFT(`date_add`, 7) as date, COUNT(*) as orders FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY LEFT(`date_add`, 7)'); foreach ($result as $row) { $orders[strtotime($row['date'].'-01')] = $row['orders']; } return $orders; } else { $orders = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT COUNT(*) as orders FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o')); } return $orders; } public static function getPurchases($date_from, $date_to, $granularity = false) { if ($granularity == 'day') { $purchases = array(); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT LEFT(`date_add`, 10) as date, SUM(od.`product_quantity` * IF( od.`purchase_supplier_price` > 0, od.`purchase_supplier_price` / `conversion_rate`, od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100 )) as total_purchase_price FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY LEFT(`date_add`, 10)'); foreach ($result as $row) { $purchases[strtotime($row['date'])] = $row['total_purchase_price']; } return $purchases; } else { return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT SUM(od.`product_quantity` * IF( od.`purchase_supplier_price` > 0, od.`purchase_supplier_price` / `conversion_rate`, od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100 )) as total_purchase_price FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o')); } } public static function getExpenses($date_from, $date_to, $granularity = false) { $expenses = ($granularity == 'day' ? array() : 0); $orders = Db::getInstance()->ExecuteS(' SELECT LEFT(`date_add`, 10) as date, total_paid_tax_incl / o.conversion_rate as total_paid_tax_incl, total_shipping_tax_excl / o.conversion_rate as total_shipping_tax_excl, o.module, a.id_country, o.id_currency, c.id_reference as carrier_reference FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'address` a ON o.id_address_delivery = a.id_address LEFT JOIN `'._DB_PREFIX_.'carrier` c ON o.id_carrier = c.id_carrier LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1 '.Shop::addSqlRestriction(false, 'o')); foreach ($orders as $order) { // Add flat fees for this order $flat_fees = Configuration::get('CONF_ORDER_FIXED') + ( $order['id_currency'] == Configuration::get('PS_CURRENCY_DEFAULT') ? Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED') : Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED_FOREIGN') ); // Add variable fees for this order $var_fees = $order['total_paid_tax_incl'] * ( $order['id_currency'] == Configuration::get('PS_CURRENCY_DEFAULT') ? Configuration::get('CONF_'.strtoupper($order['module']).'_VAR') : Configuration::get('CONF_'.strtoupper($order['module']).'_VAR_FOREIGN') ) / 100; // Add shipping fees for this order $shipping_fees = $order['total_shipping_tax_excl'] * ( $order['id_country'] == Configuration::get('PS_COUNTRY_DEFAULT') ? Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP') : Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP_OVERSEAS') ) / 100; // Tally up these fees if ($granularity == 'day') { if (!isset($expenses[strtotime($order['date'])])) { $expenses[strtotime($order['date'])] = 0; } $expenses[strtotime($order['date'])] += $flat_fees + $var_fees + $shipping_fees; } else { $expenses += $flat_fees + $var_fees + $shipping_fees; } } return $expenses; } } ```
  12. lesley you have a very nice voice ;)
  13. Great work guys! After upgrade from 1.0.3 to 1.0.4 no errors in admin panel. But I have been struggling with one problem since end of February. I remember that there was an update at the time. Despite the new orders, the chart stats in Desktop is not updated. Last 10/20/50 orders are shown correctly: Do you have an idea how to fix it?
  14. Adik

    Preventing spam

    Ok fixed. I had a custom class name in the contact-form.tpl file. BTW. For editing files I recommend the Sublime Text editor with Sublimerge 3 module. You will quickly find differences in files.
  15. Adik

    Preventing spam

    Yes, captcha protection works properly on the registration page.
  16. Adik

    Preventing spam

    Has anyone encountered a similar error on the contact page?
  17. @cj said in Problem with mailalerts and order confirmation not complete: But in the mail which the customer receives you just see your shopname with a link to http://yourshopdomain.com/ So I think there's nothing wrong there. In my case (v1.0.3 TB version), the customer sees url of admin panel in received e-mails. So I must edit manually a few .html templates and leave only {shop_ur}. Strange...
  18. @SLiCK_303 Your module sends a request to review purchased products with delivery e-mail. What do you think about a single mail? At the moment the customer receives two e-mails (delivered confirmation + review request). I mean automatically send review request after 5-7 days from testing products by customer.
  19. I just found bug (?) that can be dangerous for your stores. When editing and saving mails templates (Location -> Translations -> Translation of e-mails) variable {shop_ur} is replaced by http://yourshopdomain.com/adminfolder/{shopurl} in a few html files. After this customer receives an email with direct url to your admin panel.
  20. @cj said in Problem with mailalerts and order confirmation not complete: Why should you manually send a message to the customer using this template ? manually - I mean from Orders -> Order_numer -> Send e-mail again In the Review Request module variable {products} works in template. I want to send a request to the customer about review.
  21. You mean /themes/theme_name/mails/nl/? I have these .tpl (order_conf_cart_rules.tpl and order_conf_product_list.tpl ) files placed there. When the customer places an order, he receives an email with order_conf template - variables work properly: When I manually send a message (using the same template) to the customer, the variables do not work:
  22. Hi, Yep, I confirm this issue (order_conf.html looks ok): @CJ do you have any solution?
  23. Hello SLiCK_303 A great module, really helpful in getting new opinions! Unfortunately, I noticed a strange problem with my store. When I send a manual email to customer, variables like: {products}, {totalproducts}, {totaldiscounts} etc. do not work: But... it's works in the early three e-mails automatically generated by store: "welcome!", "order confirmation" and "waiting for bank transfer": Has anyone had a similar problem?
  24. Hi Jeff, Thanks, works great with TB, just ordered. Product photos are more detailed, additionally page loading time has been reduced ~ 30% Here is a example: https://minipc.pl/en/series-mini200/industrial-computer-core-i3-2xlan-8xusb-dual-display-delta-mini200-i3-dc12-24v
  25. Adik

    Module suggestions

    Here is a list of my Top 5 modules: https://www.presteamshop.com/en/modules-prestashop/one-page-checkout-prestashop.html https://addons.prestashop.com/en/search-filters/18575-amazzing-filter.html https://addons.prestashop.com/en/blog-forum-new/22905-amazzing-blog.html http://store.nemops.com/seo/41-prestashop-seo-booster-ultimate.html http://www.presta-sms.com/features.html Separate store management app: https://emagicone.com/products/solutions-for-prestashop/
×
×
  • Create New...