Jump to content

Welcome, Guest!

By registering with us, you'll be able to discuss, share and private message with other members of our community.


Popular Content

Showing content with the highest reputation since 10/21/2019 in all areas

  1. 6 points
    Hi everyone, I'm presenting you today a new module I always wanted to create: Consistency checks. Some of you probably know that I offer paid support services for thirtybees (and prestashop as well). In my line of work I have regularly encountered issues that were caused by inconsistencies between expected and actual environment. Thirtybees core, and modules as well, often expects that some preconditions are met. And if they are not, things can go awry pretty fast. Let me show some examples or issues I've seen: Extra file in /classes directory My customer accidentally copied php file /classes/Tools.php to /classes/db/Tools.php. That's not a big deal, right? Some extra file shouldn't have any affect on the system, right? Well, it does. When thirtybees generates class_index.php (index file for class autoloader) it includes all files from the /classes/* directory into it. In this case, the result was that thirtybees core used Tools class declared in file /classes/db/Tools.php instead of /classes/Tools.php. At the time this accidental copy happened, it wasn't a problem yet. Because both files were the same. But when my customer decided to upgrade to new version, it started to matter. And it bring down the entire server. That's because new version of thirtybees was used with old version of Tools class... It took me 4 hours (and my customer 200 EUR) to figure out the root cause of this problem. The fix was simple -- just delete the extra file. Module were deleted from filesystem without being properly uninstalled We all are guilty of doing this. Sometimes you install some module, and it crashes your shop. HTTP 500 error code. So you login via your ftp and delete the module. And the shop works ok again... But, there's a problem. There are remnants of the module in the system. Entry in modules table, registered hooks, possible overrides,... these all can cause weird stuff and bugs. For example, core updater will not allow you to perform update if it detects that some incompatible module is installed -- but what if you already deleted this module from /modules directory? Sorry, you can't upgrade. Not without going to your database and delete the module information from there... Also, these deleted modules slow down your system a bit. If there are hooks registered by delete module, thirtybees core have to evaluate this situation over and over again, every time the registered hook is executed. That's waste of resources. Images aren't displayed, because the image file is not on filesystem This is classic problem associated with migration. You copied your /img/p directory from old server, and then you import your data into database. It's very easy to make a mistake, and the data in tb_image tables can have different IDs. If that's a case, your images won't show... because the image ID does not correspond with id used to store file on filesystem... Consistency checks module All these issues can't be reproduced on vanilla installation. That's because the inconsistencies does not exists (yet). There are no extra files in classes directory, no modules were force-deleted, and all images are present,... But these inconsistencies will appear eventually, simply by using the system. So I decided to create a module that runs a bunch of tests against your system in order to find these problems. And, if possible, offers a fix. By using this module, you can get your system into the state that matches the vanilla installation as much as possible. And that can help you reduce the chance of bad things happening. At the moment, the module does not really contain a lot of tests, there are only 6 of them. But I plan to implement new along the way -- every time I will work on some problem that is caused by some inconsistency. So you can expect a lot of updates in the future. Also, if you have idea for some checks, let me know. Bug detection This module can also help detect bugs in the core or modules. If you fix some inconsistency, and it re-appears, it's likely there is some bug that wants to be fixed. Don't be shy and report this. Help thirtybees be better and more stable. Download I decided to release this module for free in order to help this project to grow. You can download the latest version of the module here: https://store.getdatakick.com/en/modules/consistency
  2. 2 points
    I am, I have just been busy on some projects around thirty bees that don't require coding.
  3. 2 points
    Mark please do not insist about this, do you remember the time when you gave me an access and canceled it just before I can try to help you ? About Images to fix. You did not say sorry at all.. you were allways right and I loose so much time with this story. I gave you my help like I always do, others accepted without conditions for free and where really happy about that, but you are too boring by giving conditions and making it difficult and frustrating to help you like this. Usually for payed service I NEED credentials otherwise there is no way I am gonna work for any customers... even if they want to spend 5 hours on skype or screen sharing and pay for that, it will not happen, it's not efficient! Now, I wish you good luck for your bugs to fix, sincerely, and I hope you'll understand my point.. maybe it will help you not to have the same encounter with others dev willing to help in a normal way, remember that without trust you'll not go very far and surely alone !
  4. 2 points
    Depends on what you want. You can make multishop as complicated as you want. The same applies to ASM. There is no limit to complexity of the needs of some customers. For some even Magento needs to be heavily customized. My motto would be: pick your fights. Make a deliberate choice what you want to include and what not. And don't include something just because one customer asked for it. If you don't want to support features you can always choose to leave them in the database but to make them inaccessible in the software interface.
  5. 2 points
    I think you are over complicating the task at hand. What you really want is to force your customers to choose attributes. You don't need to create any special attributes values, or create dedicated default combinations for your products. That's just crazy. And a lot of work for something that should be pretty simple to do by modifying your template. Also, this *virtual* combination would make other tasks in your store a lot more complicated (data import, export to google merchant center,... ) Here's something to get you started: Edit file product.tpl in niara theme, find this code {if ($group.group_type == 'select')} <select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print"> {foreach from=$group.attributes key=id_attribute item=group_attribute} <option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option> {/foreach} </select> {elseif ($group.group_type == 'color')} and replace it with this {if ($group.group_type == 'select')} <select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print"> <option value="0" selected="selected" title="{l s='Choose'}">{l s='Choose'}</option> {foreach from=$group.attributes key=id_attribute item=group_attribute} <option value="{$id_attribute|intval}" title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option> {/foreach} </select> {elseif ($group.group_type == 'color')} This code changes the dropdown attribute selector: adds new item named 'Choose' with value 0 -- non-existing attribute value id make this item pre-selected by default using selected="selected" attribute remove selected="selected" attribute from default attribute -- inside {foreach} cycle I've tested it, and it works quite nice. If you are using other types of attributes (color / radio) you will need to modify these as well, in similar manner.
  6. 2 points
    no problem for Module Installation and geo database download and update. The Module seems working fine with my first tests. Nice JOB ! 🙂
  7. 1 point
    Hi, I seem to figure it out! The name on the carrier was to long(about 38 letters), I shored this down and everything work perfectly! Thank you for this wonderful shop and forum! /Daniel
  8. 1 point
    @x97wehner please file an issue for this on github. Otherwise it will be forgotten again. Forum is really not the best place to report bugs. Edit: I have created the issue myself: https://github.com/thirtybees/thirtybees/issues/1115. The fix will be in bleeding edge shortly
  9. 1 point
    Hello everyone, it's been a while since the release 1.1.0, and it's time for another one. Version 1.1.1 should be released by the end of November. This new version is all about code quality -- there aren't many new enhancement or dazzling features. Instead, a lot of bugs and errors were fixed. For more information about this release, you can read here. Right now, I would like to ask you all for cooperation with pre-release testing and bug huntint. If you can, please use core updater to forward your store to latest bleeding edge 1.1.x, and test your store properly. If you find any bug, please report it to github. If the bug is an newly introduced problem, or if it's a seriousone, we'll try to fix it before the official release. Other bugs will be tracked and fixed in the next version(s). Thanks in advance for helping this project!
  10. 1 point
    It would. There's actually a bughancement request for this https://github.com/thirtybees/thirtybees/issues/1024 already
  11. 1 point
    try to apply this fix, hopefully it will solve the issue: https://github.com/thirtybees/thirtybees/commit/70f02721bc8ffae1e82c34a1b160ac3aee856cf8
  12. 1 point
    Google analytics module is for tracking - it adds google tracking code to your pages. Google Analytics API is for retrieving collected infromation from google servers back to your store. Without this module, the dashboard will still show zero
  13. 1 point
    Hi I've reached out to the creator of the Advanced Features Values module (multiple values for a feature), Jérôme Danthinne, to see if he'd like to donate this module to the ThirtyBees project. He has come back to me and said he is willing! 🙂 🙂 His module has great features and is compatible with ThirtyBees! - Initially written for PS 1.5 / 1.6 Please may I ask the ThirtyBees Project Owners to take it from here? Link to module: https://github.com/jdanthinne/advancedfeaturesvalues Link to donation request: https://github.com/jdanthinne/advancedfeaturesvalues/issues/31 Link to thread about Advanced Features Module on Thirty Bees: https://forum.thirtybees.com/topic/3456-multiplefeatures/?tab=comments#comment-30387
  14. 1 point
    The thing about multistore configuration is that there exists multiple layers of configuration. for specific shop for shop group for all shops When some configuration key is not found for specific shop, it will fall-back to more generic settings. In your case, you have configuration on All Shops level set up the same as for your shop B, and (some) configuration key for specific shop A weren't set up correctly. So, thirtybees merged these settings, and resulting mix was not valid stmp configuration. The same probably happens with logo
  15. 1 point
    No need to run the for_a4.php file. Just add a piece of code to the \modules\pm_advancedsearch4\views\js\as4_plugin.js to trigger the lazy loading feature after applying a filter.
  16. 1 point
    Are you asking when the next release will be? Probably by the end of this month
  17. 1 point
  18. 1 point
    There was a price rounding overhaul as part of 1.1.0 release. It's very likely your issue was solved as part of this overhaul. Upgrade. https://thirtybees.com/blog/prices-done-right/
  19. 1 point
    @oliiiix Have you tried to set your rounding rule to "per article" instead of "per line"? If it is set to per line, it will round each position after adding the amounts per article, that is useful for shops selling, for example, ropes in feet or something. If you only set articles by piece instead of per foot or per lbs, then you should set the rounding rule to "per article".
  20. 1 point
    Da https://github.com/thirtybees/bankwire/commit/914010b77f152f7fc487c5bb116a314eb7597f83
  21. 1 point
    I have already changed the code to replace name with reference code. That is fine. It is the current stock level that we need (and in stock out of stock availability notices ) that we need. Especially stock quantity because we allow purchase of out of stock products this is essential. We show it on product page but in the cart is the main place where Customers would actually take note
  22. 1 point
    There is no place in the core that queries information schema in this way. This must come from some module. My guess would be some module that generates custom order reference numbers, and it probably can't handle situation when there are no orders in the database yet...
  23. 1 point
    You could try the German agency Silbersaiten. I remember they had such a module in the past but do not expect best service or modern gui style of modules.
  24. 1 point
    I take it back. This commit is not a fix, it is a brand new bug 🙂 The proper fix would be if ((int)$this->id && !Currency::checkPaymentCurrencies($this->id)) { ... }
  25. 1 point
    Regarding cheque module -- there's obviously error in the module itself. It - instructs system that the module instance needs to be created, for example when rendering module list -- need_instance attribute in config.xml - in constructor, it uses module ID to perform check. This id exists only when module is installed Put these two thing together, add strict php 7.3 warning, and you know the root cause of the issue. The simple solution is remove this module from the filesystem, if you don't use it. Of course, we could modify the Currency::checkPaymentCurrencies method so it always returns array. Unfortunately, this is compatibility issue itself -- there can be some code that do strict comparison on return value, ie: if (Currency::checkPaymentCurrencies($this->id) === false) And such code would stop working. Following checks would still work, though: if (! Currency::checkPaymentCurrencies($this->id)) if ((bool)Currency::checkPaymentCurrencies($this->id) === false) With second problem I can't help you, because I can't reproduce it, and you haven't provided any actionable details.
  26. 1 point
    Installed and ran today. I only do business in two countries, US and CAN. Used geoscreenshot.com to test in in both countries and in both, it set the correct currency based on location so I'd say it works.
  27. 1 point
    Problem solved by removing and reinstall the block new products module.
  28. 1 point
    Thanks @zen for your testing, really appreciated. Anyone else tried this, or has some input? Remember, once it's integrated and released, it's too late to complain... 🙂
  29. 1 point
    Nice to hear that 🙂 ==> I just added a Google font selector with the 15 more popular fonts, just a beta version but it works... just that if is gonna be used in production it is better to look into the Niara theme and remove the call to the Ralway font if not needed anymore. The google font file used is easy to upgrade, it is coming from Gfont API https://developers.google.com/fonts/docs/developer_api?apix_params={"sort"%3A"popularity"} and I just kept the first 15 listed fonts. Next version will show visual renders of the fonts in real time, I hope 🙂 and taking care of font weights as well as italic or others variants.
  30. 1 point
    Can you provide the csv your are trying to import, so I can test also on the same conditions ?
  31. 1 point
    I don't think TB can handle all scenarios that a e-commerce requires. But it would be good to get a guide how its supposed to work and then find all scenarios that doesn't work and try to solve them. Rather have a solution for that than a new backoffice theme for example.
  32. 1 point
    You have the reference code field for such info.
  33. 1 point
  34. 1 point
    You can override $definition, but only as a whole, which is not ideal. To do that, simply create file /override/classes/order/OrderMessage.php with this content: <?php class OrderMessage extends OrderMessageCore { public static $definition = [ 'table' => 'order_message', 'primary' => 'id_order_message', 'multilang' => true, 'fields' => [ 'date_add' => ['type' => self::TYPE_DATE, 'validate' => 'isDate' ], 'name' => ['type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128 ], 'message' => ['type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isMessage', 'required' => true, 'size' => 6500], ], ]; } Don't forget to delete /cache/class_index.php afterwards. In this case that's all you need to do. In general, you would also have to adjust database schema to match the object model definition. In future version of thirtybees, core updater will take care of this for you automagically. We are not there yet, unfortunately.
  35. 1 point
    The problem is that there is some module with long controller name. Controller name is used to compose page key in form: module-<module_name>-<controller_name> for example module-paypal-plussubmit Thirtybees has limit 64 characters for these meta page entries. If (( module name lenth + controller name length + 8 ) > 64) then this error is thrown, because the resulting page key can't fit database column. This limit is obviously too small, we should increase it for the next version of tb. I've created github issue to increase this limit. Meanwhile, you can do this to fix the situation: Edit file classes/Meta.php and change size of the page property to 128: 'page' => ['type' => self::TYPE_STRING, 'validate' => 'isFileName', 'required' => true, 'size' => 64], to 'page' => ['type' => self::TYPE_STRING, 'validate' => 'isFileName', 'required' => true, 'size' => 128], You will also have to connect to your phpadmin and modify table schema (you might need to change table name tb_meta according to your database prefix): ALTER TABLE `tb_meta` MODIFY `page` varchar(128) NOT NULL;
  36. 1 point
    No, this is a bug. Unfortunately not easy to fix -- that's because it's another entry item that can affect total price. I'll try to fix this issue in one of the upcoming versions. Thanks for reporting it I believe you are talking about modifying \Chex\Manager::getCart() method, right? Well, there doesn't exists any way to override this file. Thirtybees allow you to override only module primary file (chex.php), but it's not possible to override other classes in the module. So, unfortunately, answer to your question is "no, there isn't any better way to do this". You will have to apply this modification manually every time you update the module. And hope that I'll implement your request soon 🙂
  37. 1 point
    The fact that there is extra javascript file on the page doesn't mean it delays page load. In this case it does not -- the paypal checkout.js is included using async and defer keywords, which instruct browser to load this asset asynchronously, and execute it after the page is parsed and rendered. Of course, your customer browser must load unnecessary data, which is not optimal. But it does not hurt your page load time <script async defer type="text/javascript" src="//www.paypalobjects.com/api/checkout.js"></script> Why is this script loaded on every page? Well, that's because paypal module does not know which controller (page) is used for checkout. So, it includes it on every page, just to be sure I have seen many payment modules to use conditional asset loading. Something like this: public function hookHeader() { $pageName = $this->context->controller->php_self; if ($pageName === 'order' || $pageName === 'order_opc') { $this->context->controller->addJS(static::JS_FILE_URL); } } And it works ok, but only for standard order and opc page. If you install some third-party checkout module (for example my chex), then this check would make the module unusable -- that's because controller name is not 'order' anymore, but it's 'module_chex_checkout'. This is actually one of the reasons why in ps17 it's forbidden to include assets conditionally. They will actually reject module from prestashop store if they find out it is using conditional asset loading. What is the best way to tackle this problem? I don't know. While it is possible to to use different hook to include this js asset (some hook that is triggered on checkout page only), it's not the best solution either. This would work only if *all* opc modules triggered this hook. And that's not guaranteed at all. By using header hook we can at least be sure that it will be triggered on every page, even on custom OPC.
  38. 1 point
    Some changes should be made to Thirty bees paypal module, as I already mentioned in some other posts, that TB's paypal is loading on every page and delaying page load. I use PS paypal module on my TB instalation. With PS Paypal module, my landing page loads with 9 requests and 293kb of data. With installed Thirtybees Paypal module, there are 14 requests and 507kb of data.
  39. 1 point
    i´m not sure mail-address have no correct domain for example email@email.COM - have you tried with the last signs (.com or another) ?
  40. 1 point
    Thats good news, thanks for the hard work! 🤗 The rest I'm bummed about, please consider after you work on your own site for awhile, that you come back and help on the forums again, your help is most needed/wanted! 😭
  41. 1 point
    Yup, that's the one. How does one go about defining hook exceptions?
  42. 1 point
    You need to find another solution because this modification breaks Advanced Parameters -> Email section radiobutton names to letters.
  43. 1 point
    Disabling a module just disables it. Which means, all hooks and overrides stay in place. To get rid of a module, one should uninstall and delete it.
  44. 1 point
    And you will probably want to modify order-detail.tpl file as well to add breadcrumbs support. Add something like this to the very beginning of the file {capture name=path} <a href="{$link->getPageLink('my-account', true)|escape:'html':'UTF-8'}"> {l s='My account'} </a> <span class="navigation-pipe">{$navigationPipe}</span> <a href="{$link->getPageLink('history', true)|escape:'html':'UTF-8'}"> {l s='Order history'} </a> <span class="navigation_page"> {l s='Order %s' sprintf=[$order->reference]} </span> {/capture}
  45. 1 point
    @dynambee is correct. I can just add that this functionality still works correctly. As far as I can tell, there exists 3 restrictions for modules Disable on tablet / Disable on mobile / Disable on computer module preferences can be used to display modules on specific device types only Multistore restriction -- if you have multistore, you can enable module for specific shops only Customer group restriction - the one we are talking about All of these impact list of hooks that are being executed. You can also manually modify this hook list by removing specific hooks that you don't want to be displayed
  46. 1 point
    Well I invested another few hours today into returns and order-slip creation. My impression from yesterday was just reinforced. This feature can't be used often by merchants. It's output is strange and also buggy. If it would be used often, we would have seen complaints about it. Here is a screenshot form my ps_order_slip table Sometimes total_products_tax_excl is just the same as total_products_tax_incl, but not always? I have no idea when it happens. Look for example id_order 15750. I did always the same testing process. Why the hell does it sometimes work and sometimes not!? The yellow marked line is also funny. It worked for shipping calculation, but not for products calculation. Another example: You see id_order 15750. Why is there no refund column? Here you see id_order=15742 and here it works :S In general I have problems to understand the intention of all database columns of ps_order_slip. That's why I decided to give up on this topic. IMO there is no other way, than first define what merchants actually need and afterwards rewrite this completly. For people which want to use this feature now: you should change mainly order-slip.total-tab.tpl and order-slip.product-tab.tpl. There you can remove the minus signs. There you can also remove the strange $order->total_products and replace itwith something like $order_slip->total_productstax_incl. TBH: I cannot offer a fully working solution as the tax is not always right (see screenshot above).
  47. 1 point
    Updated Post Thanks to @toplakd He has converted the Current Geolite2 db for us all. Attached here now. GeoLiteCity_dat.tar.gz Just in case you forgot where it goes unarchive it and put it in /tools/geoip/ directory of your Thirty Bees installation. Old legacy DB removed. Ref issues Known issue https://github.com/thirtybees/thirtybees/issues/828 here to https://github.com/thirtybees/thirtybees/issues/927
  48. 1 point
    Hi alle, I was just searching for a method to make it possible to have collapsible in our CMS page and found this useful tutorial: https://mypresta.eu/en/art/developer/create-collapsible-accordion-prestashop.html I thought it might be helpfull if somebody need it :). Best regards, Umar, Unica e-shop
  49. 1 point
    @dosbiner Sorry, I probably didn't explain it very well. You can see what I mean if you go to the community theme demo – preferably using a mobile, but failing that, narrow your browser window till it becomes a single column. Click on a few items then search for something – 'coffee' say – and you will see all of the hooked left column lists are place above the search results. Even though there are no 'new' products in the TB demo, the actual search results still end up half way down the page. On our site it's over three quarters of the way down an even longer page. It's frankly ridiculous!
  50. 0 points
    Without looking it up, I'd guess it indeed renames it from 'admin' to something else. This happens right after installation and the user gets notified about this. No idea why people would want to rename this folder to something less safe, like 'admin'. Just don't do it. Renaming it to something not starting with 'admin' breaks a shop installation as well. Don't do this either. It's an e-commerce software, not a funny-user-idea-healing toy 🙂
  • Create New...