[DBTech] DragonByte Shop

[DBTech] DragonByte Shop [Paid] 7.2.2

No permission to buy (€12.45)
Is there an expected upper limit of items to be allowed in the store before we can expect a performance hit? I added a lot of items about a week ago and since then my forum has been loading slowly, been trying to nail down what the issue could be, since this was the only change I'm wondering if I added too many items. We have nearly a thousand items.
 
Is there an expected upper limit of items to be allowed in the store before we can expect a performance hit? I added a lot of items about a week ago and since then my forum has been loading slowly, been trying to nail down what the issue could be, since this was the only change I'm wondering if I added too many items. We have nearly a thousand items.
I have not received any reports about scalability issues that I can recall 🤔 If you can, enable debug mode for your user only (method depends on how you run XF, and there might be addons for it) and check the SQL queries for any slow queries.
 
I have not received any reports about scalability issues that I can recall 🤔 If you can, enable debug mode for your user only (method depends on how you run XF, and there might be addons for it) and check the SQL queries for any slow queries.
Thank you so much for your quick reply and helpful response. Your suggestion to use debug mode helped me confirm that the slowdown I'm seeing is almost certainly related to database queries. I was able to identify another addon that was likely contributing, but I found that that the xf_dbtech_shop_item table seems to be performing a "full table scan" (the log mentioned Type: ALL) on every page and on my forum is the slowest loading query. That seems to explain why the issue only appeared after I added nearly a thousand items to the shop. I wonder if theres a way that an index could be utilized for improvements on page load? Since the full scan causes a performance hit on my forum. Just spitballing.
 
Thank you so much for your quick reply and helpful response. Your suggestion to use debug mode helped me confirm that the slowdown I'm seeing is almost certainly related to database queries. I was able to identify another addon that was likely contributing, but I found that that the xf_dbtech_shop_item table seems to be performing a "full table scan" (the log mentioned Type: ALL) on every page and on my forum is the slowest loading query. That seems to explain why the issue only appeared after I added nearly a thousand items to the shop. I wonder if theres a way that an index could be utilized for improvements on page load? Since the full scan causes a performance hit on my forum. Just spitballing.
Can you show me a screenshot of the query in the debug view, including the full stack trace (in a separate screenshot if necessary)?

I have a suspicion of what might be the cause, but with the above info I'll be able to tell for certain :)
 
I have created (With the help of AI), a cool looking shop layout for grid mode. It can be viewed here: Shop

If you want the css for your shop, then here it is. Just drop it into your extra.less template. make sure that your shop is in grid mode through the style properties for the shop.

CSS:
/* ===========================
   DBTech Shop – Category grid view
   Scoped to shop pages only
   =========================== */

body[data-template="dbtech_shop_category_view"],
body[data-template="dbtech_shop_overview"],
body[data-template="dbtech_shop"]
{
    /* Grid container: spacing between cards */
    .itemList-grid
    {
        display: flex;
        flex-flow: row wrap;
        gap: 16px;
        margin: 12px 0 20px;
        justify-content: flex-start;
    }

    /* Card base */
    .itemList-item-grid.node
    {
        position: relative;
        display: flex;
        flex-direction: column;

        width: 262px;
        max-width: 100%;
        padding: 10px 10px 12px;

        border-radius: 14px;
        border: 1px solid rgba(15, 23, 42, 0.9);
        background:
            radial-gradient(circle at 0% 0%, rgba(34, 197, 94, 0.35), transparent 55%),
            radial-gradient(circle at 100% 100%, rgba(250, 204, 21, 0.25), transparent 55%),
            linear-gradient(135deg, #020617, #020617);

        box-shadow:
            0 0 0 1px rgba(15, 23, 42, 0.95),
            0 14px 30px rgba(15, 23, 42, 0.95);

        transition:
            transform 0.18s ease-out,
            box-shadow 0.18s ease-out,
            border-color 0.18s ease-out,
            background-position 0.18s ease-out;
        overflow: hidden;
    }

    .itemList-item-grid.node:hover
    {
        transform: translateY(-4px);
        border-color: rgba(34, 197, 94, 0.8);
        box-shadow:
            0 0 0 1px rgba(34, 197, 94, 0.6),
            0 20px 40px rgba(15, 23, 42, 0.95);
    }

    /* Top overlay for inline mod checkbox */
    .itemList-item-gridOverlayTop
    {
        top: 10px;
        right: 10px;
    }

    /* Icon / thumbnail area */
    .itemList-item-grid--icon
    {
        margin-bottom: 10px;
        border-radius: 10px;
        overflow: hidden;
        background: radial-gradient(circle at 50% 0%, rgba(148, 163, 184, 0.35), transparent 60%);
    }

    .itemList-item-grid--icon img,
    .itemList-item-grid--icon .avatar
    {
        width: 100%;
        height: 160px;
        object-fit: cover;
        border-radius: inherit;
    }

    /* Title & tagline */
    .itemList-item-grid .node-main
    {
        margin-bottom: 8px;
    }

    .itemList-item-grid .node-title a[data-shortcut="node-description"]
    {
        font-size: @xf-fontSizeLarger;
        font-weight: 800;
        color: @xf-textColorEmphasized;
    }

    .itemList-item-grid .node-description
    {
        margin-top: 3px;
        font-size: @xf-fontSizeSmall;
        color: @xf-textColorMuted;
    }

    /* Meta row under title (owner, filters) */
    .itemList-item-grid .contentRow-minor--smaller
    {
        margin-top: 6px;
        font-size: @xf-fontSizeSmallest;
        color: @xf-textColorMuted;
    }

    /* Rating + price row */
    .itemList-item-grid--priceRatingInfo
    {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-top: 8px;
        margin-bottom: 8px;
    }

    .itemList-item-grid--priceRatingInfo .rating
    {
        font-size: @xf-fontSizeSmall;
        opacity: .9;
    }

    .itemList-item-grid--priceRatingInfo .price .label
    {
        border-radius: 999px;
        padding: 3px 9px;
        font-size: @xf-fontSizeSmallest;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;

        background: linear-gradient(135deg, #22c55e, #a3e635, #facc15);
        color: #022c22;
        border: 1px solid rgba(248, 250, 252, 0.85);
        box-shadow:
            0 0 4px rgba(34, 197, 94, 0.75),
            0 0 10px rgba(250, 204, 21, 0.65);
    }

    /* Buy button row */
    .itemList-item-grid--buyButton
    {
        margin-bottom: 6px;
    }

    .itemList-item-grid--buyButton .button--cta
    {
        border-radius: 999px;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
    }

    .itemList-item-grid--buyButton .button--cta:not([disabled]):hover
    {
        box-shadow:
            0 0 8px rgba(34, 197, 94, 0.8),
            0 0 16px rgba(56, 189, 248, 0.6);
    }

    /* Stock & update info at the bottom */
    .itemList-item-grid--updateInfo
    {
        margin-top: auto; /* push to bottom */
        padding-top: 6px;
        border-top: 1px solid rgba(15, 23, 42, 0.7);
        font-size: @xf-fontSizeSmallest;
        color: @xf-textColorMuted;
    }

    .itemList-item-grid--updateInfo .pairs > dt
    {
        color: @xf-textColorMuted;
    }

    /* Highlight very low stock */
    .itemList-item-grid--updateInfo .pairs dd a
    {
        font-weight: 600;
    }
    .itemList-item-grid--updateInfo .pairs dd a[data-stock-low="1"]
    {
        color: #f97316;
    }
}
 
Back
Top Bottom