Jump to content
thirty bees forum

datakick

Administrators
  • Posts

    3,123
  • Joined

  • Last visited

  • Days Won

    488

Posts posted by datakick

  1. 13 hours ago, Beeta said:

    I asked support to Prestabay about some warning I was getting on the collect logs

    [09:45:06.0606] [OLD] [fa0f947e29a961c1a5e0e2385808076c] [DEPRECATION] array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in file modules/prestabay/library/PSR4/Involic/Model/AbstractModel.php at line 159.
    
    [06:24:40.4040] [OLD] [8257f440fd98f959e057741ef5368edc] [WARNING] Link::getImageLink(): parameter $name has invalid type. Expected string, got array. This will raise error in future version of thirty bees. Called from: PrestaBay\Models\ProfileProductModel::getImageLink() in file 'modules/prestabay/models/ProfileProductModel.php' at line 1002 in file classes/Link.php at line 375.

    They released 4.3.0 version and DEPRECATION are gone but still remain the WARNINGs.

    I' now asking to fix the WARNING too.

    That's great, I love that the collectlogs module help fixing bugs in third party modules.

    The prestabay module probably pass $product->link_rewrite directly to Link::getImageLink method. Depending on mode the $product object was instantiated, this property can either contain text, or array of texts (one for each language). I guess in this case it's the later. This would result in image url like

    https://domain.com/1-Niara_home/array.jpg

    instead of expected

    https://domain.com/1-Niara_home/product-link-rewrite.jpg

    It is not a big deal, because both urls are valid. But the first url is ugly, wrong, and not-so-much SEO friendly.

     

  2. 1 hour ago, Obi said:

    Ok, so I'm asking the question because there seems to be very little in the way of documentation or resources (maybe invisible is the word I should use) regarding the Community Theme and developing themes for Thirty Bees in general... So sad as I had high hopes for this excellent fork of PrestaShop, but I digress...

    Does anyone have any information on changing the column layout, specifically the number of columns, of the product listing pages. I'm sure I will figure it out (/themes/name/product-listing.tpl or something like that) eventually, but it would be nice to be able to adjust this value in either the Community Theme Configuration module or a quick "switch" embedded in the head of the template code.

    Anyone?

    near miss. It's in file

    /themes/{{theme}}/product-list.tpl

    How to change it depends on theme -- every theme can implement this differently. Some paid themes can have this configurable, some not.

    In default theme (niara, community-theme-default) this is not configurable. Number of columns depends on the class used for individual product block -- smarty variable product_block_size_class.

    There is already some logic that switches between different number of columns depending on page name:

    https://github.com/thirtybees/niara/blob/d469fcb47b589783deebe847b77bc8d1c0a1d242/product-list.tpl#L3-L6

     

    • Thanks 1
  3. 30 minutes ago, x97wehner said:

    If returns null in all scenarios that I tried.

    Congrats, you have discovered a bug 🙂

    This will be fixed in next release. Meanwhile, you can edit file modules/datakick/engine/prestashop/functions/combination-attribute-value.php

    and change lines 97 and 88 from

    AND comb.id_product_attribute = ' . (int)$combinationId . '
    AND a.id_attribute_group = ' . (int)$attribute . '

    to

    AND comb.id_product_attribute = ' . $combinationId . '
    AND a.id_attribute_group = ' . $attribute . '

    With the fix in place, you can extract any attribute value, if you know attribute group id.

    For example, if I have these attributes groups:

    image.png.bea0eb5e509e5afde45b979cfbe4e07c.png

    I can create list of combination, and use combination id + constant 3 to extract color from combination:

    combinationAttributeValue(combinations.id, 3)

    image.thumb.png.d87708ed9651e327666a513aeb88af85.png

     

     

  4. 40 minutes ago, Beeta said:

    My ciphering configuration is already set to php encryption 

    Yes, that is the problem.

    You have (for some reason) set your store to use PHP Encryption, but no encryption key is generated. No idea how this happened. 

    Because no encryption key exists, thirty bees will raise the first warning: "PHP Encryption can't be used because _PHP_ENCRYPTION_KEY_ constant is not defined."

    And fallback to Blowfish encryption. Blowfish encryption is deprecated, and raises the second warning.

    The fix is very simple.

    1. Go to Performance tab
    2. switch encryption to Blowfish.
    3. Save
    4. switch encryption to PHP Encryption
    5. Save

    That's it. When you change encryption from Blowfish to PHP Encryption, system will generate new encryption key if none exists.

    • Like 1
    • Thanks 2
  5. 1 hour ago, 30knees said:

    I think the above is really important.

    Can you describe a use case for this?

    1 hour ago, 30knees said:

    Is there any way to block a cart rule from being applied to bulk discount product price rules?

    I don't think this is possible right now. We would have to extend Cart Rules and add new type of restriction.

    This is not related to loyalty points at all.  

  6. I've just pushed this to bleeding edge.

    Your body tag will now have class depending on selected context, for example mulstistore-context-all, multistore-context-group-1 or multistore-context-shop-2

    You can add custom css into <admin_dir>/themes/default/css/overrides.css

    body.multistore-context-shop-3 .bootstrap #header_infos {
        background-color: lightgreen;
    }

     

    • Like 1
    • Thanks 1
  7. {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}

    replace with simple

    {$product.price}

    On a related note -- I strongly recommend to remove all rich snippets markup metadata from this file.

    Imagine you have product page that shows 9 related products in the footer. When google parses this page, it sees that this page contains information about 10 products. Which is not true - the page contains one product, and 9 links to related products.  

    Similarly, when google index your category page, it sees that this is page that contains 12 products. Again, that's not true. It is category listing page with links to 12 products.

    Having product metadata in product miniature blocks creates unnecessary noise which can confuse search engines. Just get rid of them, and google will be able to better index your pages.

  8. "Image Position" is considered only if you don't use "Image URLs (x,y,z...)" Field.

    Your csv mapping can contain either  "Image URLs (x,y,z...)" field - then these images will be downloaded and used.

    Or your mapping can contain "Image Position" / "Choose among product images by position (1,2,3...)" -- in which case combination will be assigned existing product images.

     

     

  9. 10 hours ago, AndyC said:

    I want to pay as I have some modules that may cause issues . I failed to upgrade myself so would prefer someone else to do it... I can ask on People per hour but would prefer it to be done my 1 of the team here

    Hi Andy,

    you can buy support time on our website. We will be happy to help upgrade your store. Are you talking about core update only, or do you need update of PHP as well?

  10. 35 minutes ago, 30knees said:

    Thanks both, UTM tags are fine, I just don't want to use a Google tracking pixel.

    Do I need to use Matomo to track the UTM tags or can they be tracked with any of the thirtybees stats tools? I probably don't need the full capabilities of Matomo.  

    build-in stats in thirty bees does not process UTM tags. Those stats are based on webserver requests only, very low level.

    If you want to track conversion, funnels, etc, then you really need to use tool like matomo or ganalytics.

     

    • Like 1
  11. Hi everyone,

    I've releaesd new module MailQueue. This module uses latest thirty bees Mail Transport functionality, so currently it can be used in bleeding edge / 1.5.0 only.

    Link to the modulehttps://store.getdatakick.com/en/modules/mail-queue

    As the module name suggest, the main functionality of this module is to defer sending emails. Instead of trying to deliver email as part of business process, module will serialize and save it to storage (filesystem, redis, db). Cron or CLI queue processor (that runs in separate thread) will pick these queued emails and attempt delivery later.

    You can create multiple outgoing queues, and create conditions to determine which emails should go to which queue. For example, queue for 'contact' form messages. Queue for shop admin recipients. Queue for emails that contains words 'binance' or 'viagra'. Queue for transaction emails, queue for marketing emails,...

    Each queue can have different settings, of course (it wouldn't make it much sense otherwise)

    • throttling -- how many emails can be sent per hour
    • delay -- initial delay to send email 
    • failed delivery retry settings 
    • manual approval, etc 
    • retention policy -- how long do you want to keep email in the queue / after send
    • sending channel -- every queue can be send using different email transport. You can send transaction and marketing emails through differnt SMTP servers

    Some benefits of this system

    1. original process is not blocked by email sending. Slow SMTP servers can block order creation process even for a few seconds.
    2. process is not interrupted by SMTP errors - if SMTP server was down, exception could be raised, and this could block process to be finalized (order not completed)
    3. this supports sending a large amount of emails easily -- enqueueing emails is fast, so you can generate a lot of emails during one request - useful for sending marketing emails to a lot of recipients 
    4. retry option - cron/cli can retry deliver email later if SMTP error occurs
    5. you can view email content before it is sent, and even after it was sent (depending on queue retention policy)
    6. delaying some emails (for example you can delay review request email by 3 days)
    7. pause queue in case of some attack
    8. email priority
    9. different sending channels

    I'm currently looking for volunteers that would like to test this module, before I release it officially. 

    And of course, if you have some ideas or questions, let me know. I'd love to hear them all.

  12. Review request link looks like this

    https://domain.com/en/module/revws/EmailAction?id=<ID>&action=<ACTION>&product-id=2&rating=5&secret=<SECRET>

    When the link is generated and send by email, parameter <SECRET> is calculated as md5("<ID><ACTION><SALT>")

    where <SALT> is secret key stored in database, not visible to customer,

    When customer click on email, EmailAction controller once again calculates the secret using <ID>, <ACTION>, and then matches it with provided <SECRET> parameter.

    If the calculated hash value is different, link is rejected, and permission denied is thrown.

    This can happen only if one of the following is true:

    • parameter <ID> in url has been changed
    • parameter <ACTION> in url has been changed
    • parameter <SECRET> in url has been changed
    • secret <SALT> was changed (in the database -- for example by resetting module)

     

  13. I believe this is causes by some module. There are only a few places in the core that call this function, and none of them is in the product controller area.

    Anyway, a lot of modules (for example modules to synchronize data or that generate feeds) uses on this function, because default 30seconds might not be enough.

    If your hosting provider can't disable this, I would consider changing server.

     

×
×
  • Create New...