如何格式化Handlebar返回的价格区间变量,仅显示最低价?
Hey, no problem at all—there are two solid post-processing approaches you can use here since you can't tweak the original Handlebars/PHP code. Let's walk through them:
Approach 1: JavaScript (Most Reliable & Flexible)
This method directly manipulates the DOM to extract and display only the lowest price. It works even if you have multiple price elements on the page, and handles variable price lengths gracefully.
Here's the code you can add to your site's script file or a <script> tag at the end of the <body>:
// Wait for the entire page to load before running document.addEventListener('DOMContentLoaded', function() { // Target all elements with the price class const priceElements = document.querySelectorAll('.price.after_special'); priceElements.forEach(element => { // Get the full price range text and clean up whitespace const fullPriceText = element.textContent.trim(); // Split the text at the " - " separator to get the first part (lowest price) const lowestPrice = fullPriceText.split(' - ')[0]; // Optional: Remove the .00 suffix if you don't need it const cleanedPrice = lowestPrice.replace('.00', ''); // Update the element to show only the cleaned lowest price element.textContent = cleanedPrice; }); });
Note for Dynamic Content:
If your prices load after the initial page load (e.g., via AJAX or lazy loading), wrap the code in a function and call it after the content is loaded, or use a MutationObserver to watch for changes to the DOM and run the code automatically.
Approach 2: CSS (Quick Visual Fix)
If you just need a visual solution and don't care about the actual DOM content, you can use CSS to hide the upper part of the price range. This is simpler but less flexible—you'll need to adjust the width based on your font size and typical price lengths.
Add this to your site's stylesheet:
.price.after_special { /* Set a width that only fits the lowest price (adjust this value!) */ width: 60px; /* Hide any content that overflows the width */ overflow: hidden; /* Prevent text from wrapping */ white-space: nowrap; /* Optional: Add an ellipsis if you want to hint there's more content */ text-overflow: ellipsis; }
Just keep in mind: if your lowest prices vary in length (e.g., $99.00 vs $1,000.00), this might cut off text unexpectedly. Stick with the JavaScript method if you need consistency.
内容的提问来源于stack exchange,提问作者dragon25

