Unhandled Error!

Error writing to the cache file

Document /modules/core/classes/core_filecache.php
Document type PHP document
Line 54
Exception class Phpr_SystemException

Code Highlight

 
			$key = $this->fix_key($key);
			$dest_path = $this->dir_path.'/'.$key;
 
			$fp = @fopen($dest_path, 'w');
			if (!$fp)
				throw new Phpr_SystemException('Error writing to the cache file');
 
			try
			{
				if (flock($fp, LOCK_EX | LOCK_NB))
				{
					@fwrite($fp, $value);
# Call Stack Code Document Line
15 Core_FileCache->set_value('nthsv3-partial_shop-product5_2021_8f9fb8642a4371130001357cd9d7214e649f20ae', ' <!-- view=shop:product5_2021 --> <section class="product-400mm-wacker-plate-hire"> <div class="row"> <div class="three mobile-four columns prod-img" style="text-align: center;"> <div class="product-images"> <div class="main"> <img src="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_400x400.jpg" title="400mm Petrol Wacker Plate Hire" alt="400mm Petrol Wacker Plate Hire" width="400px" height="400px" /> </div> <div class="thumbs"> <ul> <li> <a href="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_400x400.jpg" title="400mm Petrol Wacker Plate" width="200px" height="200px" > <img src="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_80x80.jpg" title="400mm Petrol Wacker Plate" alt="400mm Petrol Wacker Plate Hire" link rel="preload" as="image" width="80px" height="80px"> </a> </li> <li> <a href="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire2_4974_400x400.jpg" title="400mm Petrol Wacker Plate" width="200px" height="200px" > <img src="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire2_4974_80x80.jpg" title="400mm Petrol Wacker Plate" alt="400mm Petrol Wacker Plate Hire" link rel="preload" as="image" width="80px" height="80px"> </a> </li> </ul> </div> </div> </div> <div class="four mobile-four columns middle"> <div class="meta"> <h1 style="font-weight: 900"><em>400mm Petrol Wacker Plate Hire</em></h1> <div class="bullets"> <ul> <li>Midweight</li> <li>400mm Baseplate</li> <li>13kN Vibration Force</li> <li>Low Hand-Arm Vibration</li> </ul> <ul> <li><span style="font-weight: 700; color: #b40026;">Save 41&#37;</span> on Average UK Price </li> <li>Hire for <span style="font-weight: 700; color: #002B41;">DIY</span> or <span style="font-weight: 700; color: #002B41;">Trade</span></li> </ul> </div> <hr> <p style="font-size: 1.2em;"> <i class='fas fa-map-marker-alt fa-fw' style='padding-right: 1em'></i>&nbsp; <a href='#' title='Check Availability' data-reveal-id='postcode_modal' data-closeonbackgroundclick='false' style='color:#404040;'>Click & Collect: <span style='font-weight: 700;'>1001</span> Locations</a> </p> <p style='font-size: 1.2em;'><i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide</p> <p style="font-size: 1.2em;"> <i class='fas fa-chart-line fa-fw' style='padding-right: 1em'></i>&nbsp; 5 hired in the last 24 hours </p> <p style="font-size: 1.2em; cursor: pointer" aria-label="Open pop-up: Why hire from National Tool Hire?" class="jsOpenPopUp"> <i class='fa-solid fa-circle-question' style='padding-right: 7px'></i> <span data-gtm="I: Why Hire From NTH (P)" style="color: #000; border-bottom: 1px #000 dashed;">Why Hire from National Tool Hire?</span> </p> </div> </div> <div class="five mobile-four columns"> <div class="product-description"> <form enctype="multipart/form-data" class="custom" action="/product/400mm-wacker-plate-hire" method="post"> <input type="hidden" name="ls_session_key" value="lsk693ee988da8cd7.63947450"/> <!--<div class="twelve columns call-free-cta"><a href="tel:08008089600">Need Help? <span>Call 0800 808 9600</span></a></div>--> <div class="meta"> <div class="row"> <div class="twelve mobile-four columns hide-for-medium-up" style="margin: 1em 0"> <a href="https://www.nationaltoolhireshops.co.uk/payment-and-delivery/" data-gtm="B: Free Delivery (P)" target="_blank" title="Free Delivery: 400mm-wacker-plate-hire"><img src="/themes/nthsv3/resources/images/NTH-banner-delivery-small_2.jpg" alt="Free Delivery & Collection" width="100%" height="100%" title="Free Delivery: 400mm Petrol Wacker Plate" /></a> </div> </div> </div> <div style="border: 1px solid #404040; display: none; background: #b0e3f4;" id="same-day-hire-extended"> <a href='/same-day-tool-hire/' data-gtm="B: Same-Day Hire (P)" class='same-day-loading'> <img src="/img/NTH-sameday-click-collect.webp" alt="Same Day Hire click and collect" title="Same Day Hire click and collect" loading='eager' width="439" height="56" /> </a> <p style="font-size:1.5em; padding-top: 0.3em; text-align: center;"><strong>Order in the next:</strong> <span id="same-day-countdown"></span></p> </div> <div style="border: 1px solid #404040; display: none; background: #b0e3f4;" id="same-day-hire"> <a href='/same-day-tool-hire/' data-gtm="B: Same-Day Hire (P)" class='same-day-loading'> <img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'> </a> <p style="font-size:1.5em; padding-top: 0.3em; text-align: center;"><strong>Order in the next:</strong> <span id="same-day-countdown-hire"></span> </p> </div> <script> function showSameDayBanner() { const date = new Date(); let bookingDelay = 2; //let bookingDelay = 0; if (bookingDelay <= 0) { let sameDayCutoff = new Date(date.getFullYear(),date.getMonth(),date.getDate(),11,00); let extendedSameDayCutoff = new Date(date.getFullYear(),date.getMonth(),date.getDate(),14,00); if(date >= sameDayCutoff && date < extendedSameDayCutoff) { console.log('same-day-hire-extended'); document.getElementById('same-day-hire-extended').style.display = 'block'; let span = document.getElementById('same-day-countdown'); let seconds = (extendedSameDayCutoff - date) / 1000; console.log(seconds); span.textContent = sameDayCountDownTime(seconds); setInterval(() => { seconds--; span.textContent = sameDayCountDownTime(seconds); }, 1000) } else if (date < sameDayCutoff) { console.log('same-day-hire'); document.getElementById('same-day-hire').style.display = 'block'; let span = document.getElementById('same-day-countdown-hire'); let seconds = (sameDayCutoff - date) / 1000; console.log(seconds); span.textContent = sameDayCountDownTime(seconds); setInterval(() => { seconds--; span.textContent = sameDayCountDownTime(seconds); }, 1000) } } } function sameDayCountDownTime(t) { let hours = Math.floor(t/3600); let minutes = Math.floor((t % 3600)/60); let seconds = Math.floor(t % 60); let h = hours ? (hours === 1 ? '1hr' : hours + 'hrs') : ''; let m = minutes ? (minutes === 1 ? '1min' : minutes + 'mins') : ''; let s = seconds ? (seconds === 1 ? '1sec' : seconds + 'secs') : '' return [h, m, s].filter(e => e).join(' ') } showSameDayBanner(); </script> <div class="addtocart" style="background-color: #E6E6E6; margin-top: 20px;"> <!-- view:price_calculator6 --> <div class="twelve mobile-four columns pricetable" style="background-color: #fff;"> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">24 HOURS</span><br/><span class="prodpricecalc-sale">£86.81</span><br/> <span class="productpricecalc">£50.80</span> </div> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">48 HOURS</span><br/><span class="prodpricecalc-sale">£90.19</span><br/> <span class="productpricecalc">£52.78</span> </div> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">FRI - MON</span><br/><span class="prodpricecalc-sale">£99.21</span><br/> <span class="productpricecalc">£58.05</span> </div> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">WEEKLY</span><br/><span class="prodpricecalc-sale">£112.74</span><br/> <span class="productpricecalc">£65.97</span> </div> </div> <div class="twelve mobile-four columns extrainfobox2" style="margin-bottom: 0;"> <a href="#" title="Book &amp; Pay Online" data-reveal-id="booking_modal" data-closeOnBackgroundClick="false" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;" ><i class="fa fa-lg fa-calendar"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="row" style="margin: 2em 0; padding: 1em 0;"> <div class="one mobile-one hide-for-small columns"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/VISA.png" alt="Visa" title="Visa" loading="lazy" width="100%" height="100%"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/MC.png" alt="Mastercard" title="Mastercard" width="100%" height="100%"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/Apple.png" alt="Apple Pay" title="Apple Pay" loading="lazy" width="100%" height="100%"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/G-pay.png" alt="Google Pay" title="Google Pay" loading="lazy" width="100%" height="100%"> </div> <div class="two mobile-one hide-for-small columns"> <img src="/themes/nthsv3/resources/images/PP.png" alt="PayPal" title="PayPal" loading="lazy" width="100%" height="100%";> </div> <div class="one mobile-one hide-for-small columns"> </div> </div> </div> <div class="pay-in-3 twelve mobile-four columns" style="text-align: center;"> <p>Please note: All consumables are <b>non-refundable</b>. These are purchased items, not hired</p> <div class="paypal"><i class="fa-brands fa-paypal fa-bounce" style="color: #003087; padding-left: 0.5em; width: 1.5em; --fa-animation-iteration-count: 5;--fa-animation-timing: ease-in-out;"></i> <a title="PayPal Pay in 3 Available" href="#" data-reveal-id="paypal_modal" data-closeonbackgroundclick="false" style="color: #000; border-bottom: 1px #000 solid;">PayPal 'Pay in 3' Available (0% interest)</a></div> </div> </div> </div> <div class="twelve mobile-four columns" style="margin-top: 2em;"> <div class="cd-tabs cd-tabs--vertical js-cd-tabs" style="width: 100%"> <nav class="cd-tabs__navigation"> <ul class="cd-tabs__list"> <li class="cd-tabs__list_li"> <a href="#tab-1" class="cd-tabs__item cd-tabs__item--selected" data-gtm="T: Description"> <span class="tab">Description</span> </a> </li> <li class="cd-tabs__list_li"> <a href="#tab-2" class="cd-tabs__item" data-gtm="T: Spec / Detail"> <span class="tab hide-for-small">Specification</span> <span class="tab show-for-small">Detail</span> </a> </li> <li class="cd-tabs__list_li"> <a href="#tab-3" class="cd-tabs__item" data-gtm="T: Related"> <span class="tab hide-for-small">Related Products</span> <span class="tab show-for-small">Related</span> </a> </li> </ul> </nav> <ul class="cd-tabs__panels"> <li id="tab-1" class="cd-tabs__panel cd-tabs__panel--selected text-component"> <h2><span data-preserver-spaces="true">400mm Petrol Wacker Plate Hire</span></h2> <h3><span data-preserver-spaces="true">For Compacting Soil, Hardcore, Asphalt &amp; More</span></h3> <p><span data-preserver-spaces="true">These vibrating plate compactors are professional standard pieces of construction equipment designed to give the highest quality compaction results on site and at home. They are robust and capable of performing despite tough conditions, with a tubular frame designed to protect vulnerable components. These vibrating plates are ideal for compacting hardcore, concrete, asphalt, tarmac, soil and more. Whether you are completing road works, preparing to lay a concrete slab, or building a new patio at home, they offer the ideal compaction solution.</span></p> <p><span data-preserver-spaces="true">These wacker plates feature large comfortable handles, which help reduce fatigue and hand-arm vibration on the operator. This allows you to work comfortably and safely on the job. Despite their brilliant compaction capabilities, these wacker plates are compact enough to fit conveniently into the back of a van or truck so that they can be transported around easily. They are also easy to operate and control; the baseplate does not dig into the ground when dragged backwards or turned.</span></p> <div style="display: flex; flex-wrap: wrap"> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Safety-Footwear.webp" type="image/webp"> <img src="/img/product-icons/NTH-Safety-Footwear.png" loading="lazy" title="Boots" alt="Safety Footwear" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Ear-Protection.webp" type="image/webp"> <img src="/img/product-icons/NTH-Ear-Protection.png" loading="lazy" title="Ear Protection" alt="Ear Protection" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Petrol.webp" type="image/webp"> <img src="/img/product-icons/NTH-Petrol.png" loading="lazy" title="Fuel Type - Petrol" alt="Petrol" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Eye-Protection.webp" type="image/webp"> <img src="/img/product-icons/NTH-Eye-Protection.png" loading="lazy" title="Goggles" alt="Eye Protection" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Gloves.webp" type="image/webp"> <img src="/img/product-icons/NTH-Gloves.png" loading="lazy" title="Gloves" alt="Gloves" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Hand-Arm-Vibration.webp" type="image/webp"> <img src="/img/product-icons/NTH-Hand-Arm-Vibration.png" loading="lazy" title="HAVS" alt="Hand Arm Vibration" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Large-Car-or-Van.webp" type="image/webp"> <img src="/img/product-icons/NTH-Large-Car-or-Van.png" loading="lazy" title="Transport - Car" alt="Large Car or Van" width="60" height="60"> </picture> </div> </div> </li> <li id="tab-2" class="cd-tabs__panel text-component"> <div class="product-short-specs"> <div> <table border="1"> <tbody> <tr> <td>Plate Size w x l:</td> <td>400 x 574mm</td> </tr> <tr> <td>Weight:</td> <td>66.5kg</td> </tr> <tr> <td>Centrifugal Force:</td> <td>13kN</td> </tr> <tr> <td>Travel Speed:</td> <td>20m/min</td> </tr> <tr> <td>Vibration Level:</td> <td>2.48 m/sec&sup2;</td> </tr> </tbody> </table> </div> </div> <p><strong>Please note:</strong> This product description and specification is based on the model most widely stocked across our network of partner stores. Alternative brands of equivalent specification may be supplied based on location and availability.</p> <div class="write-review"> <a href="#" data-reveal-id="write-review" data-closeOnBackgroundClick="false">Write Review</a> </div> </li> <li id="tab-3" class="cd-tabs__panel text-component"> <p> <!--<section class="related-products bottom block"> <div class="row">--> <!-- view:shop:product_list_diy_trade_21_2_row --> <!-- --> <div style="margin-bottom: 2em;" class="product-list-item"> <div class="" style="display: inline-block; border: 1px solid #002B41; background: #002B41; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; text-transform: uppercase; font-weight: bold">Most Popular</div> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <div class="twelve columns" style="border: 0.4em solid #002B41 !important; border: 0.2em solid #00b67A !important; height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <div class="three mobile-four columns"> <div class="images"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Product Image (C)"> <img class="primary" loading="eager" style="display: block; margin-left: auto; margin-right: auto;" src="/uploaded/thumbnails/Block_Splitter_Vibrating_Plate_Hire_Package_5436_400x400.jpg" title="Block Splitter & Petrol Vibrating Plate Package Hire " alt="Block Splitter & Petrol Vibrating Plate Package Hire " data-gtm="Product Image (C)" width="100%" height="100%" /> </a> </div> </div> <div class="five mobile-four columns"> <div class="desc"> <h2 style="font-size: 1.9em; margin-bottom: 1px; margin-top: 0;"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Product Name (C)" style="color: #404040; ">Block Splitter &amp; Petrol Vibrating Plate Package</a> </h2> <p class="context">For Cutting Pavers & Compacting</p> <!-- <div class="rating-5" style="margin: 1em 0;"> </div> --> <div class="catbul"><ul> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Manual Block Splitter</li> <li>Convenient Combination</li> <li>Money Saving</li> </ul></div> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> </div> </div> <div class="four mobile-four columns"> <div class="product-mobile"> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> <div class="catbul"><ul> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Manual Block Splitter</li> <li>Convenient Combination</li> <li>Money Saving</li> </ul></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <span class="price">from </span><span class="price"> £92.36 </span> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save 41&#37;</span><br/> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> </p> </div> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide <br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>467</span> Locations </p> </div> </div> </div> </div> </div> <div style="margin-bottom: 2em;" class="product-list-item"> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <div class="twelve columns" style=" border: 0.2em solid #00b67A !important; height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <div class="three mobile-four columns"> <div class="images"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Product Image (C)"> <img class="primary" loading="eager" style="display: block; margin-left: auto; margin-right: auto;" src="/uploaded/thumbnails/Cement_Mixer_Vibrating_Plate_Hire_Package_5434_400x400.jpg" title="Cement Mixer & Vibrating Plate Package Hire " alt="Cement Mixer & Vibrating Plate Package Hire " data-gtm="Product Image (C)" width="100%" height="100%" /> </a> </div> </div> <div class="five mobile-four columns"> <div class="desc"> <h2 style="font-size: 1.9em; margin-bottom: 1px; margin-top: 0;"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Product Name (C)" style="color: #404040; ">Cement Mixer &amp; Vibrating Plate Package</a> </h2> <p class="context">For Mixing & Tamping Cement</p> <!-- <div class="rating-5" style="margin: 1em 0;"> </div> --> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Mixer Stand Included</li> <li>Money Saving</li> </ul></div> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> </div> </div> <div class="four mobile-four columns"> <div class="product-mobile"> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Mixer Stand Included</li> <li>Money Saving</li> </ul></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <span class="price">from </span><span class="price"> £58.70 </span> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save 54&#37;</span><br/> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> </p> </div> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide <br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>903</span> Locations </p> </div> </div> </div> </div> </div> <div style="margin-bottom: 2em;" class="product-list-item"> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <div class="twelve columns" style=" border: 0.2em solid #00b67A !important; height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <div class="three mobile-four columns"> <div class="images"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Product Image (C)"> <img class="primary" loading="eager" style="display: block; margin-left: auto; margin-right: auto;" src="/uploaded/thumbnails/Cement_Mixer_Disc_Cutter_Vibrating_Plate_Package_Hire_5435_400x400.jpg" title="Cement Mixer, Disc Cutter & Vibrating Plate Package Hire " alt="Cement Mixer, Disc Cutter & Vibrating Plate Package Hire " data-gtm="Product Image (C)" width="100%" height="100%" /> </a> </div> </div> <div class="five mobile-four columns"> <div class="desc"> <h2 style="font-size: 1.9em; margin-bottom: 1px; margin-top: 0;"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Product Name (C)" style="color: #404040; ">Cement Mixer, Disc Cutter &amp; Vibrating Plate Package</a> </h2> <p class="context">Mix, Tamp & Cut Cement & Materials</p> <!-- <div class="rating-5" style="margin: 1em 0;"> </div> --> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>300mm Or 350mm Petrol Disc Cutter</li> <li>Disc sold separately</li> <li>Mixer Stand Included</li> </ul></div> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> </div> </div> <div class="four mobile-four columns"> <div class="product-mobile"> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>300mm Or 350mm Petrol Disc Cutter</li> <li>Disc sold separately</li> <li>Mixer Stand Included</li> </ul></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <span class="price">from </span><span class="price"> £86.60 </span> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save 56&#37;</span><br/> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> </p> </div> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide <br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>817</span> Locations </p> </div> </div> </div> </div> </div> <script type='application/ld+json'>{"@context":"http://www.schema.org","name":"Products","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"url":"https://www.nationaltoolhireshops.co.uk/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/"},{"@type":"ListItem","position":2,"url":"https://www.nationaltoolhireshops.co.uk/product/cement-mixer-vibrating-plate-package-hire/"},{"@type":"ListItem","position":3,"url":"https://www.nationaltoolhireshops.co.uk/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/"}],"numberOfItems": "3"}</script> <!-- --> <!--</div> </section>--> </p> </li> </ul> </div> <script src="/themes/nthsv3/resources/javascripts/foundation/util.js"></script> <script src="/themes/nthsv3/resources/javascripts/foundation/main.js"></script> </div> </div> </div> </form> <div id="booking_modal" ajax-id="693ee98901bfa" data-reveal class="" data-overlay="false"> <link rel="stylesheet" type="text/css" href="https://booking.nationaltoolhireshops.co.uk/themes/nationaltoolhire/uk/css/bookingV2.css" /> <link rel="stylesheet" type="text/css" href="https://booking.nationaltoolhireshops.co.uk/themes/sites/nths/css/bookingV2.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://booking.nationaltoolhireshops.co.uk/themes/nationaltoolhire/uk/css/bootstrap-isolated-4-6-1.css"> <link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.min.js" integrity=sha384-tc3TMXCcTCib89yECEQXI4e6DhhlwNrqzYpvyeSqBD2vB/KugQH7o3p+/UtKuS5L crossorigin="anonymous"></script> <form id="bookingBox"> <div class="booking-close"><a href="javascript:void(0)" class="closebtn">&times;</a></div> <div class="booking-info"> <div class="booking-calendar-box"> <div class="booking-tabs"> <div class="booking-tabs-wrap"> <input type="hidden" id="datepicker_booking_start" name="start_date"> <input type="hidden" id="datepicker_booking_end" name="end_date"> <button type="button" data-tab-id="datepicker_booking_start" class="active"> Booking Start Date </button> <button type="button" disabled data-tab-id="datepicker_booking_end"> Booking End Date </button> </div> </div> <div class="booking-calendar"></div> </div> <div class="booking-container bootstrap-isolation-4-6-1"> <input type="hidden" name="edit_item_id" value=""> <div id="booking_summary" class="row booking-stage-2 flex-nowrap"> <div class="col-md-9 col-sm-9"> <span id="booking_num_days" class="h4"></span> </div> <div class="col-md-3 col-sm-3 text-right"> <span class="h4 price-display-variable "></span> </div> </div> <div class="row"> <div class="col-12"> <div id="saturday_sameday_alert" class="my-3 alert alert-success d-none">Saturday Same-Day Hire is only available as Click &amp; Collect. If you require delivery/collection by us, please select Friday as the start date and Saturday as the end date (for no extra cost).</div> <div id="extended_sameday_alert" class="my-3 alert alert-success d-none"> Same-Day Hire is only available as Click &amp; Collect today. If you require delivery/collection by us, please select a different start date. </div> <div class="row"> <div class="col-md-12 form-group py-1 mt-3"> <label for="booking_quantity">Quantity</label> <div class="form-quantity"> <input type="number" class="form-control" step="1" min="1" value="1" name="booking_quantity" id="booking_quantity"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> </div> </div> </div> </div> <hr> <div class="row booking-stage-2"> <div class="col-12"> <section> <div class="h5 mt-2 mb-2">Accessories</div> <div class="row mb-2"> <div class="col-12"> <label class="checkbox label-inline disabled"> <input type="checkbox" checked disabled data-name="Full Tank of Petrol" data-cost="8.57" name="extras[6205]" data-is-hired=""> Full Tank of Petrol <span class="price-display-variable pull-right" data-for="extras[]"> &nbsp;(£8.57) </span> </label> </div> </div> </section> <hr> <section class="extras-section"> <div class="h5 mt-2 mb-3">Extras</div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[5600]" class="mb-2 d-md-none">Super Grip Gloves - Large&nbsp; <b>(£3.06)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[5600]" id="extras[5600]" data-cost="3.06" data-is-hired="" data-name="Super Grip Gloves - Large"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[5600]" class="pl-2 d-none d-md-block">Super Grip Gloves - Large&nbsp; <b>(£3.06)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[5600]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[5601]" class="mb-2 d-md-none">Super Grip Gloves - Extra Large&nbsp; <b>(£3.06)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[5601]" id="extras[5601]" data-cost="3.06" data-is-hired="" data-name="Super Grip Gloves - Extra Large"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[5601]" class="pl-2 d-none d-md-block">Super Grip Gloves - Extra Large&nbsp; <b>(£3.06)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[5601]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[6272]" class="mb-2 d-md-none">Hard Hat&nbsp; <b>(£8.16)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[6272]" id="extras[6272]" data-cost="8.16" data-is-hired="" data-name="Hard Hat"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[6272]" class="pl-2 d-none d-md-block">Hard Hat&nbsp; <b>(£8.16)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[6272]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[5602]" class="mb-2 d-md-none">Ear Defenders&nbsp; <b>(£10.20)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[5602]" id="extras[5602]" data-cost="10.2" data-is-hired="" data-name="Ear Defenders"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[5602]" class="pl-2 d-none d-md-block">Ear Defenders&nbsp; <b>(£10.20)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[5602]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[6273]" class="mb-2 d-md-none">Hi-Vis&nbsp; <b>(£7.14)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[6273]" id="extras[6273]" data-cost="7.14" data-is-hired="" data-name="Hi-Vis"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[6273]" class="pl-2 d-none d-md-block">Hi-Vis&nbsp; <b>(£7.14)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[6273]">£0.00</div> </div> </div> </section> </div> </div> <hr class="booking-stage-2"> <div class="row booking-stage-2 mt-2"> <div class="col-6 form-group"> <div class="h4 mt-1 mb-1">Total</div> </div> <div class="col-6 text-right"> <span id="booking_total" class="price-display-variable h4 mb-3"></span> </div> </div> <div id="booking_errors" class="d-none alert alert-danger text-center my-3"> It looks like some of the fields are invalid. Please check them and try again. </div> <button type="submit" title="Book Hire" class="btn btn-info py-3 btn-book"><i class="fa fa-lg fa-calendar"></i>&nbsp; Book Hire</button> </div> </div> </form> <div id="overlay-bookingBox"></div> <script type="text/javascript"> (function () { //# sourceURL=bookingForm.js // This section should be constants, but for backwards compatibility we have to use var var IS_EMBEDDED = true; var $MODAL = IS_EMBEDDED ? $('#booking_modal') : $('#bookingBox').parent(); var VALID_START_DATES = ["2025-12-16","2025-12-17","2025-12-18","2025-12-19","2025-12-20","2025-12-22","2025-12-23","2025-12-24","2025-12-27","2025-12-29","2025-12-30","2025-12-31","2026-01-02","2026-01-03","2026-01-05","2026-01-06","2026-01-07","2026-01-08","2026-01-09","2026-01-10","2026-01-12","2026-01-13","2026-01-14","2026-01-15","2026-01-16","2026-01-17","2026-01-19","2026-01-20","2026-01-21","2026-01-22","2026-01-23","2026-01-24","2026-01-26","2026-01-27","2026-01-28","2026-01-29","2026-01-30","2026-01-31","2026-02-02","2026-02-03","2026-02-04","2026-02-05","2026-02-06","2026-02-07","2026-02-09","2026-02-10","2026-02-11","2026-02-12","2026-02-13","2026-02-14","2026-02-16","2026-02-17","2026-02-18","2026-02-19","2026-02-20","2026-02-21","2026-02-23","2026-02-24","2026-02-25","2026-02-26","2026-02-27","2026-02-28","2026-03-02","2026-03-03","2026-03-04","2026-03-05","2026-03-06","2026-03-07","2026-03-09","2026-03-10","2026-03-11","2026-03-12","2026-03-13","2026-03-14","2026-03-16","2026-03-17","2026-03-18","2026-03-19","2026-03-20","2026-03-21","2026-03-23","2026-03-24","2026-03-25","2026-03-27","2026-03-28","2026-03-30","2026-03-31","2026-04-01","2026-04-02","2026-04-03","2026-04-04","2026-04-06","2026-04-07","2026-04-08","2026-04-09","2026-04-10","2026-04-11","2026-04-13","2026-04-14","2026-04-15","2026-04-16","2026-04-17","2026-04-18","2026-04-20","2026-04-21","2026-04-22","2026-04-23","2026-04-24","2026-04-25","2026-04-27","2026-04-28","2026-04-29","2026-04-30","2026-05-01","2026-05-02","2026-05-04","2026-05-05","2026-05-06","2026-05-07","2026-05-08","2026-05-09","2026-05-11","2026-05-12","2026-05-13","2026-05-14","2026-05-15","2026-05-16","2026-05-18","2026-05-19","2026-05-20","2026-05-21","2026-05-22","2026-05-23","2026-05-25","2026-05-26","2026-05-27","2026-05-28","2026-05-29","2026-05-30","2026-06-01","2026-06-02","2026-06-03","2026-06-04","2026-06-05","2026-06-06","2026-06-08","2026-06-09","2026-06-10","2026-06-11","2026-06-12","2026-06-13","2026-06-15","2026-06-16","2026-06-17","2026-06-18","2026-06-19","2026-06-20","2026-06-22","2026-06-23","2026-06-24","2026-06-25","2026-06-26","2026-06-27","2026-06-29","2026-06-30","2026-07-01","2026-07-02","2026-07-03","2026-07-04","2026-07-06","2026-07-07","2026-07-08","2026-07-09","2026-07-10","2026-07-11","2026-07-13","2026-07-14","2026-07-15","2026-07-16","2026-07-17","2026-07-18","2026-07-20","2026-07-21","2026-07-22","2026-07-23","2026-07-24","2026-07-25","2026-07-27","2026-07-28","2026-07-29","2026-07-30","2026-07-31","2026-08-01","2026-08-03","2026-08-04","2026-08-05","2026-08-06","2026-08-07","2026-08-08","2026-08-10","2026-08-11","2026-08-12","2026-08-13","2026-08-14","2026-08-15","2026-08-17","2026-08-18","2026-08-19","2026-08-20","2026-08-21","2026-08-22","2026-08-24","2026-08-25","2026-08-26","2026-08-27","2026-08-28","2026-08-29","2026-08-31","2026-09-01","2026-09-02","2026-09-03","2026-09-04","2026-09-05","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-14","2026-09-15","2026-09-16","2026-09-17","2026-09-18","2026-09-19","2026-09-21","2026-09-22","2026-09-23","2026-09-24","2026-09-25","2026-09-26","2026-09-28","2026-09-29","2026-09-30","2026-10-01","2026-10-02","2026-10-03","2026-10-05","2026-10-06","2026-10-07","2026-10-08","2026-10-09","2026-10-10","2026-10-12","2026-10-13","2026-10-14","2026-10-15","2026-10-16","2026-10-17","2026-10-19","2026-10-20","2026-10-21","2026-10-22","2026-10-23","2026-10-24","2026-10-26","2026-10-27","2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-02","2026-11-03","2026-11-04","2026-11-05","2026-11-06","2026-11-07","2026-11-09","2026-11-10","2026-11-11","2026-11-12","2026-11-13","2026-11-14","2026-11-16","2026-11-17","2026-11-18","2026-11-19","2026-11-20","2026-11-21","2026-11-23","2026-11-24","2026-11-25","2026-11-26","2026-11-27","2026-11-28","2026-11-30","2026-12-01","2026-12-02","2026-12-03","2026-12-04","2026-12-05","2026-12-07","2026-12-08","2026-12-09","2026-12-10","2026-12-11","2026-12-12","2026-12-14","2026-12-15"]; var DATEPICKER_DEFAULTS = { dateFormat: 'dd-mm-yy', format: 'g:i A', minDate: '16-12-2025' || -0, firstDay: 1, }; var DELIVERY_CUTOFF = '11:00'; var CURRENCY = '£' || '£'; /* When we search for the minimum end date, it starts on the start date i.e same-day return If that isn't possible, we try the next day, then the next, and so on This is the maximum number of days we should look ahead by before showing an error If it's exceeded, it's probably because dateCosts isn't being populated so there aren't any valid booking dates */ var MAXIMUM_END_DATE_ADJUSTMENT = 14; var ROOT_URL = "https://booking.nationaltoolhireshops.co.uk"; var DEFAULT_ERROR_MSG = $('#booking_errors').text(); var dateCosts; var product = { 'name': "400mm Petrol Wacker Plate", 'sku': "050010", 'prod_code': "4021" }; var $pickerStart = $('#datepicker_booking_start', $MODAL); var $pickerEnd = $('#datepicker_booking_end', $MODAL); var $bookingSummary = $('#booking_summary', $MODAL); var $bookingCost = $('#booking_summary .price-display-variable', $MODAL); var $numDays = $('#booking_num_days', $MODAL); var $qty = $('input[name="booking_quantity"], select[name="booking_quantity"]', $MODAL); var $bookingTotal = $('#booking_total.price-display-variable', $MODAL); var $priceSubTotals = $('.price-display-variable', $MODAL).not($bookingTotal); var $form = $('#bookingBox', $MODAL); var $overlay = $('#overlay-bookingBox', $MODAL); window.booking = { form: $form, product: product, redirectDelay: 250 } $MODAL.on('open.zf.reveal reveal:open', openBookingBox); $overlay.add('#booking_modal .closebtn').on('click', closeBookingBox); if((new URLSearchParams(window.location.search)).get('booking_modal_show') == 1) { $(document).ready(openBookingBox); } $pickerStart.datepicker($.extend({ beforeShowDay: isValidStartDate, numberOfMonths: [2,1], }, DATEPICKER_DEFAULTS)) .on('change', function () { updateDateCosts(function () { $('.booking-tabs button[data-tab-id="datepicker_booking_end"]').removeAttr('disabled') .addClass('active').siblings().removeClass('active'); $('#booking_end', $MODAL).removeClass('disabled'); $pickerEnd.datepicker('setDate', null).datepicker('show'); $pickerEnd.find('.ui-datepicker-days-cell-over').trigger('mouseenter') let validDates = Object.keys(dateCosts); if(validDates.length === 1) { let dateObj = $.datepicker.parseDate('yy-mm-dd', validDates[0]); $pickerEnd.datepicker('setDate', dateObj).trigger('change'); updateBookingOverview(); } }); }); $pickerEnd.datepicker($.extend({ beforeShowDay: isValidEndDate, numberOfMonths: [2,1] }, DATEPICKER_DEFAULTS)) .on('change', function () { validateBookingDates(); $('#bookingBox').addClass('show-booking-container'); if (window.matchMedia("(max-width: 767px)").matches) { $('#bookingBox').animate({ scrollTop: $('#booking_summary').offset().top }, 'slow'); } }); $('.ui-datepicker-div-in-menu').removeClass('ui-datepicker-div-in-menu'); $('#ui-datepicker-div').on('mouseenter', 'td', highlightBookingDates); $('.booking-tabs button[ data-tab-id="datepicker_booking_start"]').on('click', function() { $(this).siblings().removeClass( 'active' ); $(this).addClass( 'active' ); $pickerStart.datepicker('show'); }); $('.booking-tabs button[ data-tab-id="datepicker_booking_end"]').on('click', function() { $(this).siblings().removeClass( 'active' ); $(this).addClass( 'active' ); $pickerEnd.datepicker('show'); }); $('.form-quantity').each(function() { let $spinner = $(this); let $input = $spinner.find('input[type="number"]'); let $btnPlus = $spinner.find('.quantity-plus'); let $btnMinus = $spinner.find('.quantity-minus'); let min = +($input.attr('min') || 0); let max = +($input.attr('max') || 999); $spinner.on('click', '.quantity-plus, .quantity-minus', function(e) { let val = parseFloat($input.val()); if(e.currentTarget.classList.contains('quantity-plus')) { val++; } else { val--; } val = Math.min(Math.max(val, min), max); val === min ? $btnMinus.addClass('disabled') : $btnMinus.removeClass('disabled'); val === max ? $btnPlus.addClass('disabled') : $btnPlus.removeClass('disabled'); $input.val(val); updateDateCosts(); }); }); $qty.on('input', updateBookingOverview); $('input[type="number"][data-cost]', $MODAL).on('input', function() { updateExtrasCosts(); updateBookingOverview(); }); $form.on('submit', function(e) { e.preventDefault(); var $this = $(this); $this.addClass('ajax-form-loading'); var url = new URL(ROOT_URL); url.pathname = '/booking'; url.searchParams.append('edit_item_url', window.location.href.split('?')[0]); var editItemId = $('input[name="edit_item_id"]').val(); if(editItemId) { url.searchParams.append('edit_item_id', editItemId); } url.searchParams.append('prod_code', product.prod_code); url.searchParams.append('sku', product.sku); $.ajax({ type: $this.attr('method'), url: url, method: 'POST', data: $this.serialize(), xhrFields: { withCredentials: true }, success: function(response) { $this.removeClass('ajax-form-loading'); var $errorDisplay = $('#booking_errors'); $errorDisplay.addClass('d-none'); if(response.success) { $form.trigger('booking:basket-add', [getSelectedItems()]); } if(!response.success) { $errorDisplay.removeClass('d-none'); let error = response.errors ? response.errors.join('<br>') : DEFAULT_ERROR_MSG; $errorDisplay.text(error); } if(response.redirect) { setTimeout(function() { window.location.href = ROOT_URL + response.redirect; }, booking.redirectDelay) } } }); }); function getSelectedItems() { let items = [{ 'item_id': product.sku, 'item_name': product.name, 'price': product.bookedCost, 'quantity': +$qty.val() }] $('input[name^="extras"]').each(function(i, elem) { let qty = elem.type === 'checkbox' ? 1 : +elem.value; if(qty <= 0 || isNaN(qty)) return; let price = +elem.getAttribute('data-cost') * qty; if(elem.getAttribute('data-is-hired')) { price *= Math.ceil(getBookingDaysLength()/7); } items.push({ 'item_id': '', 'item_name': elem.getAttribute('data-name'), 'price': price, 'quantity': qty }); }); return items; } function openBookingBox() { $('#bookingBox').addClass('show'); $overlay.show(); // Only initialise the datepicker once if(!$('.ui-datepicker-div-in-menu').length) { $('#bookingBox .booking-calendar').append($('#ui-datepicker-div').addClass('ui-datepicker-div-in-menu')); $pickerStart.datepicker('show'); } } function closeBookingBox() { $overlay.hide(); $('#bookingBox').removeClass('show'); $('html, body').removeClass('is-reveal-open'); } function validateBookingDates() { if($pickerStart.attr('disabled') || $pickerEnd.attr('disabled')) { return false; } var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); var minimumEndDate = startDate; var daysAdjusted = 0; while(!isValidEndDate(minimumEndDate)[0] && daysAdjusted <= MAXIMUM_END_DATE_ADJUSTMENT) { minimumEndDate = new Date(minimumEndDate.getTime() + (24 * 60 * 60 * 1000)); daysAdjusted++; } if(startDate === null) { return; } $pickerEnd.datepicker('option', 'minDate', minimumEndDate); if(endDate === null) { return; } if(!isValidEndDate(endDate)[0] || !isValidEndDate(minimumEndDate)[0]) { // Validation has pushed the end date out of scope, reset it so the user can pick again $pickerEnd.datepicker('setDate', null); } $pickerEnd.datepicker('option', 'minDate', minimumEndDate); updateBookingOverview(); } /** * Per jQuery datepicker documentation: * A function that takes a date as a parameter and must return an array with: * [0]: true/false indicating whether or not this date is selectable * [1]: a CSS class name to add to the date's cell or "" for the default presentation * [2]: an optional popup tooltip for this date * The function is called for each day in the datepicker before it is displayed. */ function isValidEndDate(date) { var dateString = $.datepicker.formatDate('yy-mm-dd', date); var selectable = !!(dateCosts[dateString] && dateCosts[dateString]['cost']); var classes = ''; var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); if(date.toString() === startDate.toString()) { classes += ' datepicker-start-date'; } else if(date > startDate && date < endDate) { classes += ' datepicker-date-range'; } return [ selectable, classes, null ]; } /** * Validator for jQuery datepicker * @param date The date to be tested * @returns array [ * boolean , * string, * null * ] * */ function isValidStartDate(date) { var dateString = $.datepicker.formatDate('yy-mm-dd', date); // IE doesn't support array.includes() var selectable = VALID_START_DATES.indexOf(dateString) !== -1; return [ selectable, "", null ]; } function updateDateCosts(cb) { var data = { 'start_date': $.datepicker.formatDate(DATEPICKER_DEFAULTS.dateFormat, $pickerStart.datepicker('getDate')), 'booking_quantity': $qty.val(), 'json': true }; var editItemId = $('input[name="edit_item_id"]').val(); if(editItemId) { data['edit_item_id'] = editItemId } else { data['prod_code'] = product.prod_code; data['sku'] = product.sku } $.ajax({ url: ROOT_URL + '/booking/', datatype: 'jsonp', data: data, xhrFields: { withCredentials: true }, success: function(data) { if(typeof data === 'string') { data = JSON.parse(data); } if(data.success === true && data.costs) { for(var date in data.costs) { if(data.costs[date].cost > 0) { dateCosts = data.costs } } } if(!dateCosts) { showBookingError(); $pickerStart.attr('disabled', true); $pickerEnd.attr('disabled', true); } validateBookingDates(); if(cb && typeof cb === 'function') { cb(); } } }); } function showBookingError(text) { text = text || "Sorry, an unknown problem has been encountered. Please refresh the page and try again. If the problem persists, please contact us."; $('#booking_errors').text(text).removeClass('d-none'); } function getBookingDaysLength() { var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); if(!startDate || !endDate) { return null; } return Math.round((+endDate - +startDate) / 86400000); } function updateExtrasCosts() { $('input[data-cost]').each(function(i, elem) { var $elem = $(elem); var $priceDisplay = $('.price-display-variable[data-for="'+$elem.attr('name')+'"]'); var price = $elem.data('cost')*$elem.val(); if($elem.data('is-hired')) { price *= Math.ceil(getBookingDaysLength()/7); } $priceDisplay.text(CURRENCY + price.toFixed(2)); }); } function updateBookingOverview() { const $extendedSamedayAlert = $('#extended_sameday_alert'); const now = new Date(); var $saturdayAlert = $('#saturday_sameday_alert'); $extendedSamedayAlert.addClass('d-none'); $saturdayAlert.addClass('d-none'); updateExtrasCosts(); var days = getBookingDaysLength(); if(days === null) { $bookingSummary.addClass('d-none'); $bookingCost.text(CURRENCY + '0.00'); $numDays.text(''); return; } var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); var endDateString = $.datepicker.formatDate('yy-mm-dd', endDate); var cost = dateCosts[endDateString].cost*$qty.val(); const isSameDay = $.datepicker.formatDate('y-m-d', now) === $.datepicker.formatDate('y-m-d', startDate); product.bookedCost = +cost.toFixed(2); $bookingCost.text(CURRENCY + cost.toFixed(2)); // Just for display purposes days++; if(isSameDay && now.toLocaleTimeString('en-GB') >= DELIVERY_CUTOFF) { $extendedSamedayAlert.removeClass('d-none'); } if(days === 0) { days = '< 1 day'; if(startDate.getDay() === 6) { $saturdayAlert.removeClass('d-none'); } } else if(days === 1) { days += ' day'; } else { days += ' days'; } $numDays.html($qty.val() + 'x ' + product.name); $bookingTotal.text(CURRENCY + getTotalCost().toFixed(2)); $('.booking-stage-2', $MODAL).removeClass('d-none'); } function getTotalCost() { var cost = 0; for(var i=0; i<$priceSubTotals.length; i++) { var subTotal = +$($priceSubTotals[i]).text().replace(CURRENCY, ''); if(!isNaN(subTotal)) { cost += subTotal; } } $('input[type="checkbox"][data-cost]').each(function(i, elem) { let subtotal = +elem.getAttribute('data-cost'); if(elem.getAttribute('data-is-hired')) { subtotal *= Math.ceil(getBookingDaysLength()/7); } cost += subtotal; }); return cost; } function highlightBookingDates() { var $td = $(this); var $wrapper = $td.parents('#ui-datepicker-div'); var highlightClass = 'datepicker-date-range'; // Only highlight a trail of dates if this is the picker for booking_end_date and there isn't a date already selected if($('.booking-tabs button.active').attr('data-tab-id') !== $pickerEnd.attr('id') || $pickerEnd.datepicker('getDate')) { return; } $wrapper.find('.'+highlightClass).removeClass(highlightClass); $td.parent().prevAll().find('td:not(.ui-datepicker-current-day)').addClass(highlightClass); $td.prevAll().filter('td:not(.ui-datepicker-current-day)').addClass(highlightClass); let $start = $wrapper.find('.datepicker-start-date'); $start.prevAll().removeClass(highlightClass); $start.parent().prevAll().find('td').removeClass(highlightClass); } $('.extras-tooltip').on('click', function() { $(this).tooltip({ items: ".extras-tooltip", content: function () { return $(this).prop('title'); } }); $(this).tooltip("open"); }); $('.extras-tooltip').on('mouseout', function() { $(this).tooltip("destroy"); }); })(); </script> </div> <style> .reveal-modal #postcode_lookup_form { border: none; padding: 0; } .reveal-modal #postcode_lookup_form .form-group { padding: 1em 0; } </style> <div class="reveal-modal" id="postcode_modal" data-reveal> <div class="row"> <div class="twelve columns" style="padding:2em";> <style> #postcode_lookup_form { padding: 20px; border: 1px solid lightgray; max-width: 600px; margin-top: 5px; text-align: center; } #postcode_lookup_form #depot_address { width: 100%; position: relative; } #postcode_lookup_form table { position: relative; } #depot_address.admin-view::before { content: 'Admin view'; position: absolute; left: 0; top: -15px; font-size: 11px; background: #dadada; padding: 2px; } </style> <form id="postcode_lookup_form" action="/include_postcode_lookup/" method="get" class="container"> <div class="form-group"> <label>Postcode:</label> <input type="hidden" name="sku" value="050010"> <input class="input-sm" type="text" name="postcode" placeholder="Enter your postcode" required> <button type="submit">Find nearby stores</button> </div> <div class="form-group hide"> <table class="twelve"> <tbody id="depot_address" class=""></tbody> </table> </div> </form> <script> (function() { var $form = $('#postcode_lookup_form'); var $addresses = $('#depot_address'); var readOnly = !!"1"; var adminView = !!""; $form.on('submit', function(e) { e.preventDefault(); var $this = $(this); $.ajax({ type: $this.attr('method') || 'post', url: $this.attr('action') || '', data: $this.serialize(), complete: handleFormSubmit }); }); function handleFormSubmit(response) { var depots = JSON.parse(response.responseText); if(!depots) { return; } if(readOnly) { $addresses.find('tr').remove(); $addresses.parents('.hide').removeClass('hide'); for(var i=0; i<depots.length; i++) { var html = '<tr><td class="text-center">'; if(adminView) { html += depots[i].supplierName + ', ' + depots[i].address } else { html += depots[i].name + ', ' + depots[i].postcode.split(' ')[0]; } if(depots[i].distance && depots[i].distanceUnits) { if(depots[i].distance > 1) { depots[i].distance = Math.round(depots[i].distance); } html += ' - (' + depots[i].distance + ' ' + depots[i].distanceUnits + ' away)' } html += '</td></tr>'; $addresses.append(html); } } else { $addresses.find(':not([value=""])').remove(); $addresses.parents('.hide').removeClass('hide'); for(var i=0; i<depots.length; i++) { var html = '<option value="' + depots[i].id + '">' + depots[i].name + ', ' + depots[i].postcode; if(depots[i].distance && depots[i].distanceUnits) { if(depots[i].distance > 1) { depots[i].distance = Math.round(depots[i].distance); } html += ' - (' + depots[i].distance + ' ' + depots[i].distanceUnits + ' away)' } html += '</option>'; $addresses.append(html); $addresses.trigger('change'); } } } })(); </script> </div> </div> </div> </section> <div id="write-review" class="c-review-form reveal-modal" style="display: none"> <h3 class="t2">Write a review for "400mm Petrol Wacker Plate"</h3> <form enctype="multipart/form-data" class="custom" action="/product/400mm-wacker-plate-hire" method="post"> <input type="hidden" name="ls_session_key" value="lsk693ee98903ace8.02575168"/> <label for="rating">Rating</label> <select name="rating" id="rating" style="font-size: 1em; margin-bottom: 1em; height: 2em;"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <label for="review_author_name">Your name</label> <input id="review_author_name" name="review_author_name" type="text" /> <label for="review_author_email">Email</label> <input id="review_author_email" type="text" name="review_author_email" /> <label for="review_title">Title</label> <input id="review_title" name="review_title" type="text" /> <label for="review_text">Review</label> <textarea rows="5" id="review_text" name="review_text" /></textarea> <button type="submit" class="btn button" style="background-color: #00b67A;" onclick="return $(this).getForm().sendRequest('shop:on_addProductReview', { extraFields: { no_flash: true, }, onSuccess: function() { $('#write-review').trigger('reveal:close'); document.location.reload(true); } })">Submit review</button> </form> <a class="close-reveal-modal">&#215;</a> </div> <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "name": "400mm Petrol Wacker Plate", "image": "https://www.nationaltoolhireshops.co.uk/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_400x400.jpg", "description": "400mm petrol vibrating plates flatten hardcore, concrete, asphalt, tarmac, soil & more, and they are ideal for roadworks & landscaping.", "mpn": "050010", "model": "050010", "sku": "050010", "manufacturer": "National Tool Hire", "brand": { "@type": "Brand", "name": "National Tool Hire" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "5", "reviewCount": "4" }, "offers": { "@type": "Offer", "itemCondition": "http://schema.org/NewCondition", "availability": "http://schema.org/InStock", "price": "46.99", "priceCurrency": "GBP", "priceValidUntil": "2025-12-21", "url": "https://www.nationaltoolhireshops.co.uk/product/400mm-wacker-plate-hire/", "shippingDetails": { "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "GB" }, "shippingRate": { "@type": "MonetaryAmount", "value": 0.00, "currency": "GBP" }, "deliveryTime": { "@type": "ShippingDeliveryTime", "businessDays": { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "https://schema.org/Monday", "https://schema.org/Tuesday", "https://schema.org/Wednesday", "https://schema.org/Thursday", "https://schema.org/Friday", "https://schema.org/Saturday" ] }, "cutoffTime": "11:30:00Z", "handlingTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 2, "unitCode": "d" }, "transitTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "d" } } }, "seller": { "@type": "Organization", "name": "National Tool Hire" }, "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "applicableCountry": "GB", "returnPolicyCategory": "https://schema.org/MerchantReturnUnlimitedWindow", "merchantReturnDays": 365, "returnMethod": "ReturnByMail", "returnFees": "FreeReturn" } } } </script> ', 86400) /modules/core/classes/core_cachebase.php 262
14 Core_CacheBase->set('nthsv3-partial_shop-product5_2021_8f9fb8642a4371130001357cd9d7214e649f20ae', ' <!-- view=shop:product5_2021 --> <section class="product-400mm-wacker-plate-hire"> <div class="row"> <div class="three mobile-four columns prod-img" style="text-align: center;"> <div class="product-images"> <div class="main"> <img src="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_400x400.jpg" title="400mm Petrol Wacker Plate Hire" alt="400mm Petrol Wacker Plate Hire" width="400px" height="400px" /> </div> <div class="thumbs"> <ul> <li> <a href="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_400x400.jpg" title="400mm Petrol Wacker Plate" width="200px" height="200px" > <img src="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_80x80.jpg" title="400mm Petrol Wacker Plate" alt="400mm Petrol Wacker Plate Hire" link rel="preload" as="image" width="80px" height="80px"> </a> </li> <li> <a href="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire2_4974_400x400.jpg" title="400mm Petrol Wacker Plate" width="200px" height="200px" > <img src="/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire2_4974_80x80.jpg" title="400mm Petrol Wacker Plate" alt="400mm Petrol Wacker Plate Hire" link rel="preload" as="image" width="80px" height="80px"> </a> </li> </ul> </div> </div> </div> <div class="four mobile-four columns middle"> <div class="meta"> <h1 style="font-weight: 900"><em>400mm Petrol Wacker Plate Hire</em></h1> <div class="bullets"> <ul> <li>Midweight</li> <li>400mm Baseplate</li> <li>13kN Vibration Force</li> <li>Low Hand-Arm Vibration</li> </ul> <ul> <li><span style="font-weight: 700; color: #b40026;">Save 41&#37;</span> on Average UK Price </li> <li>Hire for <span style="font-weight: 700; color: #002B41;">DIY</span> or <span style="font-weight: 700; color: #002B41;">Trade</span></li> </ul> </div> <hr> <p style="font-size: 1.2em;"> <i class='fas fa-map-marker-alt fa-fw' style='padding-right: 1em'></i>&nbsp; <a href='#' title='Check Availability' data-reveal-id='postcode_modal' data-closeonbackgroundclick='false' style='color:#404040;'>Click & Collect: <span style='font-weight: 700;'>1001</span> Locations</a> </p> <p style='font-size: 1.2em;'><i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide</p> <p style="font-size: 1.2em;"> <i class='fas fa-chart-line fa-fw' style='padding-right: 1em'></i>&nbsp; 5 hired in the last 24 hours </p> <p style="font-size: 1.2em; cursor: pointer" aria-label="Open pop-up: Why hire from National Tool Hire?" class="jsOpenPopUp"> <i class='fa-solid fa-circle-question' style='padding-right: 7px'></i> <span data-gtm="I: Why Hire From NTH (P)" style="color: #000; border-bottom: 1px #000 dashed;">Why Hire from National Tool Hire?</span> </p> </div> </div> <div class="five mobile-four columns"> <div class="product-description"> <form enctype="multipart/form-data" class="custom" action="/product/400mm-wacker-plate-hire" method="post"> <input type="hidden" name="ls_session_key" value="lsk693ee988da8cd7.63947450"/> <!--<div class="twelve columns call-free-cta"><a href="tel:08008089600">Need Help? <span>Call 0800 808 9600</span></a></div>--> <div class="meta"> <div class="row"> <div class="twelve mobile-four columns hide-for-medium-up" style="margin: 1em 0"> <a href="https://www.nationaltoolhireshops.co.uk/payment-and-delivery/" data-gtm="B: Free Delivery (P)" target="_blank" title="Free Delivery: 400mm-wacker-plate-hire"><img src="/themes/nthsv3/resources/images/NTH-banner-delivery-small_2.jpg" alt="Free Delivery & Collection" width="100%" height="100%" title="Free Delivery: 400mm Petrol Wacker Plate" /></a> </div> </div> </div> <div style="border: 1px solid #404040; display: none; background: #b0e3f4;" id="same-day-hire-extended"> <a href='/same-day-tool-hire/' data-gtm="B: Same-Day Hire (P)" class='same-day-loading'> <img src="/img/NTH-sameday-click-collect.webp" alt="Same Day Hire click and collect" title="Same Day Hire click and collect" loading='eager' width="439" height="56" /> </a> <p style="font-size:1.5em; padding-top: 0.3em; text-align: center;"><strong>Order in the next:</strong> <span id="same-day-countdown"></span></p> </div> <div style="border: 1px solid #404040; display: none; background: #b0e3f4;" id="same-day-hire"> <a href='/same-day-tool-hire/' data-gtm="B: Same-Day Hire (P)" class='same-day-loading'> <img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'> </a> <p style="font-size:1.5em; padding-top: 0.3em; text-align: center;"><strong>Order in the next:</strong> <span id="same-day-countdown-hire"></span> </p> </div> <script> function showSameDayBanner() { const date = new Date(); let bookingDelay = 2; //let bookingDelay = 0; if (bookingDelay <= 0) { let sameDayCutoff = new Date(date.getFullYear(),date.getMonth(),date.getDate(),11,00); let extendedSameDayCutoff = new Date(date.getFullYear(),date.getMonth(),date.getDate(),14,00); if(date >= sameDayCutoff && date < extendedSameDayCutoff) { console.log('same-day-hire-extended'); document.getElementById('same-day-hire-extended').style.display = 'block'; let span = document.getElementById('same-day-countdown'); let seconds = (extendedSameDayCutoff - date) / 1000; console.log(seconds); span.textContent = sameDayCountDownTime(seconds); setInterval(() => { seconds--; span.textContent = sameDayCountDownTime(seconds); }, 1000) } else if (date < sameDayCutoff) { console.log('same-day-hire'); document.getElementById('same-day-hire').style.display = 'block'; let span = document.getElementById('same-day-countdown-hire'); let seconds = (sameDayCutoff - date) / 1000; console.log(seconds); span.textContent = sameDayCountDownTime(seconds); setInterval(() => { seconds--; span.textContent = sameDayCountDownTime(seconds); }, 1000) } } } function sameDayCountDownTime(t) { let hours = Math.floor(t/3600); let minutes = Math.floor((t % 3600)/60); let seconds = Math.floor(t % 60); let h = hours ? (hours === 1 ? '1hr' : hours + 'hrs') : ''; let m = minutes ? (minutes === 1 ? '1min' : minutes + 'mins') : ''; let s = seconds ? (seconds === 1 ? '1sec' : seconds + 'secs') : '' return [h, m, s].filter(e => e).join(' ') } showSameDayBanner(); </script> <div class="addtocart" style="background-color: #E6E6E6; margin-top: 20px;"> <!-- view:price_calculator6 --> <div class="twelve mobile-four columns pricetable" style="background-color: #fff;"> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">24 HOURS</span><br/><span class="prodpricecalc-sale">£86.81</span><br/> <span class="productpricecalc">£50.80</span> </div> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">48 HOURS</span><br/><span class="prodpricecalc-sale">£90.19</span><br/> <span class="productpricecalc">£52.78</span> </div> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">FRI - MON</span><br/><span class="prodpricecalc-sale">£99.21</span><br/> <span class="productpricecalc">£58.05</span> </div> <div class="three mobile-two columns pricecol"> <span class="prodhireperiodheader">WEEKLY</span><br/><span class="prodpricecalc-sale">£112.74</span><br/> <span class="productpricecalc">£65.97</span> </div> </div> <div class="twelve mobile-four columns extrainfobox2" style="margin-bottom: 0;"> <a href="#" title="Book &amp; Pay Online" data-reveal-id="booking_modal" data-closeOnBackgroundClick="false" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;" ><i class="fa fa-lg fa-calendar"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="row" style="margin: 2em 0; padding: 1em 0;"> <div class="one mobile-one hide-for-small columns"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/VISA.png" alt="Visa" title="Visa" loading="lazy" width="100%" height="100%"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/MC.png" alt="Mastercard" title="Mastercard" width="100%" height="100%"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/Apple.png" alt="Apple Pay" title="Apple Pay" loading="lazy" width="100%" height="100%"> </div> <div class="two mobile-one columns"> <img src="/themes/nthsv3/resources/images/G-pay.png" alt="Google Pay" title="Google Pay" loading="lazy" width="100%" height="100%"> </div> <div class="two mobile-one hide-for-small columns"> <img src="/themes/nthsv3/resources/images/PP.png" alt="PayPal" title="PayPal" loading="lazy" width="100%" height="100%";> </div> <div class="one mobile-one hide-for-small columns"> </div> </div> </div> <div class="pay-in-3 twelve mobile-four columns" style="text-align: center;"> <p>Please note: All consumables are <b>non-refundable</b>. These are purchased items, not hired</p> <div class="paypal"><i class="fa-brands fa-paypal fa-bounce" style="color: #003087; padding-left: 0.5em; width: 1.5em; --fa-animation-iteration-count: 5;--fa-animation-timing: ease-in-out;"></i> <a title="PayPal Pay in 3 Available" href="#" data-reveal-id="paypal_modal" data-closeonbackgroundclick="false" style="color: #000; border-bottom: 1px #000 solid;">PayPal 'Pay in 3' Available (0% interest)</a></div> </div> </div> </div> <div class="twelve mobile-four columns" style="margin-top: 2em;"> <div class="cd-tabs cd-tabs--vertical js-cd-tabs" style="width: 100%"> <nav class="cd-tabs__navigation"> <ul class="cd-tabs__list"> <li class="cd-tabs__list_li"> <a href="#tab-1" class="cd-tabs__item cd-tabs__item--selected" data-gtm="T: Description"> <span class="tab">Description</span> </a> </li> <li class="cd-tabs__list_li"> <a href="#tab-2" class="cd-tabs__item" data-gtm="T: Spec / Detail"> <span class="tab hide-for-small">Specification</span> <span class="tab show-for-small">Detail</span> </a> </li> <li class="cd-tabs__list_li"> <a href="#tab-3" class="cd-tabs__item" data-gtm="T: Related"> <span class="tab hide-for-small">Related Products</span> <span class="tab show-for-small">Related</span> </a> </li> </ul> </nav> <ul class="cd-tabs__panels"> <li id="tab-1" class="cd-tabs__panel cd-tabs__panel--selected text-component"> <h2><span data-preserver-spaces="true">400mm Petrol Wacker Plate Hire</span></h2> <h3><span data-preserver-spaces="true">For Compacting Soil, Hardcore, Asphalt &amp; More</span></h3> <p><span data-preserver-spaces="true">These vibrating plate compactors are professional standard pieces of construction equipment designed to give the highest quality compaction results on site and at home. They are robust and capable of performing despite tough conditions, with a tubular frame designed to protect vulnerable components. These vibrating plates are ideal for compacting hardcore, concrete, asphalt, tarmac, soil and more. Whether you are completing road works, preparing to lay a concrete slab, or building a new patio at home, they offer the ideal compaction solution.</span></p> <p><span data-preserver-spaces="true">These wacker plates feature large comfortable handles, which help reduce fatigue and hand-arm vibration on the operator. This allows you to work comfortably and safely on the job. Despite their brilliant compaction capabilities, these wacker plates are compact enough to fit conveniently into the back of a van or truck so that they can be transported around easily. They are also easy to operate and control; the baseplate does not dig into the ground when dragged backwards or turned.</span></p> <div style="display: flex; flex-wrap: wrap"> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Safety-Footwear.webp" type="image/webp"> <img src="/img/product-icons/NTH-Safety-Footwear.png" loading="lazy" title="Boots" alt="Safety Footwear" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Ear-Protection.webp" type="image/webp"> <img src="/img/product-icons/NTH-Ear-Protection.png" loading="lazy" title="Ear Protection" alt="Ear Protection" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Petrol.webp" type="image/webp"> <img src="/img/product-icons/NTH-Petrol.png" loading="lazy" title="Fuel Type - Petrol" alt="Petrol" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Eye-Protection.webp" type="image/webp"> <img src="/img/product-icons/NTH-Eye-Protection.png" loading="lazy" title="Goggles" alt="Eye Protection" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Gloves.webp" type="image/webp"> <img src="/img/product-icons/NTH-Gloves.png" loading="lazy" title="Gloves" alt="Gloves" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Hand-Arm-Vibration.webp" type="image/webp"> <img src="/img/product-icons/NTH-Hand-Arm-Vibration.png" loading="lazy" title="HAVS" alt="Hand Arm Vibration" width="60" height="60"> </picture> </div> <div style="padding: 3px 6px 3px 0;"> <picture> <source srcset="/img/product-icons/NTH-Large-Car-or-Van.webp" type="image/webp"> <img src="/img/product-icons/NTH-Large-Car-or-Van.png" loading="lazy" title="Transport - Car" alt="Large Car or Van" width="60" height="60"> </picture> </div> </div> </li> <li id="tab-2" class="cd-tabs__panel text-component"> <div class="product-short-specs"> <div> <table border="1"> <tbody> <tr> <td>Plate Size w x l:</td> <td>400 x 574mm</td> </tr> <tr> <td>Weight:</td> <td>66.5kg</td> </tr> <tr> <td>Centrifugal Force:</td> <td>13kN</td> </tr> <tr> <td>Travel Speed:</td> <td>20m/min</td> </tr> <tr> <td>Vibration Level:</td> <td>2.48 m/sec&sup2;</td> </tr> </tbody> </table> </div> </div> <p><strong>Please note:</strong> This product description and specification is based on the model most widely stocked across our network of partner stores. Alternative brands of equivalent specification may be supplied based on location and availability.</p> <div class="write-review"> <a href="#" data-reveal-id="write-review" data-closeOnBackgroundClick="false">Write Review</a> </div> </li> <li id="tab-3" class="cd-tabs__panel text-component"> <p> <!--<section class="related-products bottom block"> <div class="row">--> <!-- view:shop:product_list_diy_trade_21_2_row --> <!-- --> <div style="margin-bottom: 2em;" class="product-list-item"> <div class="" style="display: inline-block; border: 1px solid #002B41; background: #002B41; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; text-transform: uppercase; font-weight: bold">Most Popular</div> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <div class="twelve columns" style="border: 0.4em solid #002B41 !important; border: 0.2em solid #00b67A !important; height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <div class="three mobile-four columns"> <div class="images"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Product Image (C)"> <img class="primary" loading="eager" style="display: block; margin-left: auto; margin-right: auto;" src="/uploaded/thumbnails/Block_Splitter_Vibrating_Plate_Hire_Package_5436_400x400.jpg" title="Block Splitter & Petrol Vibrating Plate Package Hire " alt="Block Splitter & Petrol Vibrating Plate Package Hire " data-gtm="Product Image (C)" width="100%" height="100%" /> </a> </div> </div> <div class="five mobile-four columns"> <div class="desc"> <h2 style="font-size: 1.9em; margin-bottom: 1px; margin-top: 0;"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Product Name (C)" style="color: #404040; ">Block Splitter &amp; Petrol Vibrating Plate Package</a> </h2> <p class="context">For Cutting Pavers & Compacting</p> <!-- <div class="rating-5" style="margin: 1em 0;"> </div> --> <div class="catbul"><ul> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Manual Block Splitter</li> <li>Convenient Combination</li> <li>Money Saving</li> </ul></div> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> </div> </div> <div class="four mobile-four columns"> <div class="product-mobile"> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> <div class="catbul"><ul> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Manual Block Splitter</li> <li>Convenient Combination</li> <li>Money Saving</li> </ul></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <span class="price">from </span><span class="price"> £92.36 </span> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save 41&#37;</span><br/> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> </p> </div> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide <br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>467</span> Locations </p> </div> </div> </div> </div> </div> <div style="margin-bottom: 2em;" class="product-list-item"> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <div class="twelve columns" style=" border: 0.2em solid #00b67A !important; height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <div class="three mobile-four columns"> <div class="images"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Product Image (C)"> <img class="primary" loading="eager" style="display: block; margin-left: auto; margin-right: auto;" src="/uploaded/thumbnails/Cement_Mixer_Vibrating_Plate_Hire_Package_5434_400x400.jpg" title="Cement Mixer & Vibrating Plate Package Hire " alt="Cement Mixer & Vibrating Plate Package Hire " data-gtm="Product Image (C)" width="100%" height="100%" /> </a> </div> </div> <div class="five mobile-four columns"> <div class="desc"> <h2 style="font-size: 1.9em; margin-bottom: 1px; margin-top: 0;"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Product Name (C)" style="color: #404040; ">Cement Mixer &amp; Vibrating Plate Package</a> </h2> <p class="context">For Mixing & Tamping Cement</p> <!-- <div class="rating-5" style="margin: 1em 0;"> </div> --> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Mixer Stand Included</li> <li>Money Saving</li> </ul></div> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> </div> </div> <div class="four mobile-four columns"> <div class="product-mobile"> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>Mixer Stand Included</li> <li>Money Saving</li> </ul></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <span class="price">from </span><span class="price"> £58.70 </span> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save 54&#37;</span><br/> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> </p> </div> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-vibrating-plate-package-hire/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide <br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>903</span> Locations </p> </div> </div> </div> </div> </div> <div style="margin-bottom: 2em;" class="product-list-item"> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <div class="twelve columns" style=" border: 0.2em solid #00b67A !important; height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <div class="three mobile-four columns"> <div class="images"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Product Image (C)"> <img class="primary" loading="eager" style="display: block; margin-left: auto; margin-right: auto;" src="/uploaded/thumbnails/Cement_Mixer_Disc_Cutter_Vibrating_Plate_Package_Hire_5435_400x400.jpg" title="Cement Mixer, Disc Cutter & Vibrating Plate Package Hire " alt="Cement Mixer, Disc Cutter & Vibrating Plate Package Hire " data-gtm="Product Image (C)" width="100%" height="100%" /> </a> </div> </div> <div class="five mobile-four columns"> <div class="desc"> <h2 style="font-size: 1.9em; margin-bottom: 1px; margin-top: 0;"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Product Name (C)" style="color: #404040; ">Cement Mixer, Disc Cutter &amp; Vibrating Plate Package</a> </h2> <p class="context">Mix, Tamp & Cut Cement & Materials</p> <!-- <div class="rating-5" style="margin: 1em 0;"> </div> --> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>300mm Or 350mm Petrol Disc Cutter</li> <li>Disc sold separately</li> <li>Mixer Stand Included</li> </ul></div> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> </div> </div> <div class="four mobile-four columns"> <div class="product-mobile"> <a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='11:00' data-cut-off-end='14:00'><img src='/img/NTH-sameday-click-collect.webp' alt='Same Day Hire click and collect' title='Same Day Hire click and collect' loading='eager' width='439' height='56'></a><a href='/same-day-tool-hire/' style='display:none;' class='same-day-loading' data-booking-delay='1' data-cut-off-start='00:00' data-cut-off-end='11:00'><img src='/themes/nthsv3/resources/images/d_headers/NTH-banners-sameday-strip.jpg' alt='Same-Day Tool Hire' title='Same-Day Tool Hire' loading='eager'></a> <div class="catbul"><ul> <li>110v, 240v Or Petrol Cement Mixer</li> <li>320mm Or 400mm Petrol Wacker Plate</li> <li>300mm Or 350mm Petrol Disc Cutter</li> <li>Disc sold separately</li> <li>Mixer Stand Included</li> </ul></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <span class="price">from </span><span class="price"> £86.60 </span> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save 56&#37;</span><br/> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> </p> </div> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton" style="background: #fcb713 !important; color: #000 !important;"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide <br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>817</span> Locations </p> </div> </div> </div> </div> </div> <script type='application/ld+json'>{"@context":"http://www.schema.org","name":"Products","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"url":"https://www.nationaltoolhireshops.co.uk/product/block-splitter-and-petrol-vibrating-plate-package-for-hire/"},{"@type":"ListItem","position":2,"url":"https://www.nationaltoolhireshops.co.uk/product/cement-mixer-vibrating-plate-package-hire/"},{"@type":"ListItem","position":3,"url":"https://www.nationaltoolhireshops.co.uk/product/cement-mixer-disc-cutter-vibrating-plate-package-hire/"}],"numberOfItems": "3"}</script> <!-- --> <!--</div> </section>--> </p> </li> </ul> </div> <script src="/themes/nthsv3/resources/javascripts/foundation/util.js"></script> <script src="/themes/nthsv3/resources/javascripts/foundation/main.js"></script> </div> </div> </div> </form> <div id="booking_modal" ajax-id="693ee98901bfa" data-reveal class="" data-overlay="false"> <link rel="stylesheet" type="text/css" href="https://booking.nationaltoolhireshops.co.uk/themes/nationaltoolhire/uk/css/bookingV2.css" /> <link rel="stylesheet" type="text/css" href="https://booking.nationaltoolhireshops.co.uk/themes/sites/nths/css/bookingV2.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://booking.nationaltoolhireshops.co.uk/themes/nationaltoolhire/uk/css/bootstrap-isolated-4-6-1.css"> <link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.min.js" integrity=sha384-tc3TMXCcTCib89yECEQXI4e6DhhlwNrqzYpvyeSqBD2vB/KugQH7o3p+/UtKuS5L crossorigin="anonymous"></script> <form id="bookingBox"> <div class="booking-close"><a href="javascript:void(0)" class="closebtn">&times;</a></div> <div class="booking-info"> <div class="booking-calendar-box"> <div class="booking-tabs"> <div class="booking-tabs-wrap"> <input type="hidden" id="datepicker_booking_start" name="start_date"> <input type="hidden" id="datepicker_booking_end" name="end_date"> <button type="button" data-tab-id="datepicker_booking_start" class="active"> Booking Start Date </button> <button type="button" disabled data-tab-id="datepicker_booking_end"> Booking End Date </button> </div> </div> <div class="booking-calendar"></div> </div> <div class="booking-container bootstrap-isolation-4-6-1"> <input type="hidden" name="edit_item_id" value=""> <div id="booking_summary" class="row booking-stage-2 flex-nowrap"> <div class="col-md-9 col-sm-9"> <span id="booking_num_days" class="h4"></span> </div> <div class="col-md-3 col-sm-3 text-right"> <span class="h4 price-display-variable "></span> </div> </div> <div class="row"> <div class="col-12"> <div id="saturday_sameday_alert" class="my-3 alert alert-success d-none">Saturday Same-Day Hire is only available as Click &amp; Collect. If you require delivery/collection by us, please select Friday as the start date and Saturday as the end date (for no extra cost).</div> <div id="extended_sameday_alert" class="my-3 alert alert-success d-none"> Same-Day Hire is only available as Click &amp; Collect today. If you require delivery/collection by us, please select a different start date. </div> <div class="row"> <div class="col-md-12 form-group py-1 mt-3"> <label for="booking_quantity">Quantity</label> <div class="form-quantity"> <input type="number" class="form-control" step="1" min="1" value="1" name="booking_quantity" id="booking_quantity"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> </div> </div> </div> </div> <hr> <div class="row booking-stage-2"> <div class="col-12"> <section> <div class="h5 mt-2 mb-2">Accessories</div> <div class="row mb-2"> <div class="col-12"> <label class="checkbox label-inline disabled"> <input type="checkbox" checked disabled data-name="Full Tank of Petrol" data-cost="8.57" name="extras[6205]" data-is-hired=""> Full Tank of Petrol <span class="price-display-variable pull-right" data-for="extras[]"> &nbsp;(£8.57) </span> </label> </div> </div> </section> <hr> <section class="extras-section"> <div class="h5 mt-2 mb-3">Extras</div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[5600]" class="mb-2 d-md-none">Super Grip Gloves - Large&nbsp; <b>(£3.06)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[5600]" id="extras[5600]" data-cost="3.06" data-is-hired="" data-name="Super Grip Gloves - Large"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[5600]" class="pl-2 d-none d-md-block">Super Grip Gloves - Large&nbsp; <b>(£3.06)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[5600]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[5601]" class="mb-2 d-md-none">Super Grip Gloves - Extra Large&nbsp; <b>(£3.06)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[5601]" id="extras[5601]" data-cost="3.06" data-is-hired="" data-name="Super Grip Gloves - Extra Large"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[5601]" class="pl-2 d-none d-md-block">Super Grip Gloves - Extra Large&nbsp; <b>(£3.06)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[5601]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[6272]" class="mb-2 d-md-none">Hard Hat&nbsp; <b>(£8.16)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[6272]" id="extras[6272]" data-cost="8.16" data-is-hired="" data-name="Hard Hat"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[6272]" class="pl-2 d-none d-md-block">Hard Hat&nbsp; <b>(£8.16)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[6272]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[5602]" class="mb-2 d-md-none">Ear Defenders&nbsp; <b>(£10.20)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[5602]" id="extras[5602]" data-cost="10.2" data-is-hired="" data-name="Ear Defenders"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[5602]" class="pl-2 d-none d-md-block">Ear Defenders&nbsp; <b>(£10.20)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[5602]">£0.00</div> </div> </div> <div class="row mb-3"> <div class="col-sm-9 col-lg-9 col-md-8 extra-description"> <label for="extras[6273]" class="mb-2 d-md-none">Hi-Vis&nbsp; <b>(£7.14)</b> </label> <div class="form-quantity d-block"> <input type="number" class="form-control" min="0" step="1" value="0" name="extras[6273]" id="extras[6273]" data-cost="7.14" data-is-hired="" data-name="Hi-Vis"> <div class="form-quantity-nav"> <div class="form-quantity-btn quantity-minus disabled">-</div> <div class="form-quantity-btn quantity-plus">+</div> </div> </div> <label for="extras[6273]" class="pl-2 d-none d-md-block">Hi-Vis&nbsp; <b>(£7.14)</b> </label> </div> <div class="col-md-4 col-lg-3 col-sm-3"> <div class="price-display-variable text-right font-weight-bold" style="font-size: 1em;" data-for="extras[6273]">£0.00</div> </div> </div> </section> </div> </div> <hr class="booking-stage-2"> <div class="row booking-stage-2 mt-2"> <div class="col-6 form-group"> <div class="h4 mt-1 mb-1">Total</div> </div> <div class="col-6 text-right"> <span id="booking_total" class="price-display-variable h4 mb-3"></span> </div> </div> <div id="booking_errors" class="d-none alert alert-danger text-center my-3"> It looks like some of the fields are invalid. Please check them and try again. </div> <button type="submit" title="Book Hire" class="btn btn-info py-3 btn-book"><i class="fa fa-lg fa-calendar"></i>&nbsp; Book Hire</button> </div> </div> </form> <div id="overlay-bookingBox"></div> <script type="text/javascript"> (function () { //# sourceURL=bookingForm.js // This section should be constants, but for backwards compatibility we have to use var var IS_EMBEDDED = true; var $MODAL = IS_EMBEDDED ? $('#booking_modal') : $('#bookingBox').parent(); var VALID_START_DATES = ["2025-12-16","2025-12-17","2025-12-18","2025-12-19","2025-12-20","2025-12-22","2025-12-23","2025-12-24","2025-12-27","2025-12-29","2025-12-30","2025-12-31","2026-01-02","2026-01-03","2026-01-05","2026-01-06","2026-01-07","2026-01-08","2026-01-09","2026-01-10","2026-01-12","2026-01-13","2026-01-14","2026-01-15","2026-01-16","2026-01-17","2026-01-19","2026-01-20","2026-01-21","2026-01-22","2026-01-23","2026-01-24","2026-01-26","2026-01-27","2026-01-28","2026-01-29","2026-01-30","2026-01-31","2026-02-02","2026-02-03","2026-02-04","2026-02-05","2026-02-06","2026-02-07","2026-02-09","2026-02-10","2026-02-11","2026-02-12","2026-02-13","2026-02-14","2026-02-16","2026-02-17","2026-02-18","2026-02-19","2026-02-20","2026-02-21","2026-02-23","2026-02-24","2026-02-25","2026-02-26","2026-02-27","2026-02-28","2026-03-02","2026-03-03","2026-03-04","2026-03-05","2026-03-06","2026-03-07","2026-03-09","2026-03-10","2026-03-11","2026-03-12","2026-03-13","2026-03-14","2026-03-16","2026-03-17","2026-03-18","2026-03-19","2026-03-20","2026-03-21","2026-03-23","2026-03-24","2026-03-25","2026-03-27","2026-03-28","2026-03-30","2026-03-31","2026-04-01","2026-04-02","2026-04-03","2026-04-04","2026-04-06","2026-04-07","2026-04-08","2026-04-09","2026-04-10","2026-04-11","2026-04-13","2026-04-14","2026-04-15","2026-04-16","2026-04-17","2026-04-18","2026-04-20","2026-04-21","2026-04-22","2026-04-23","2026-04-24","2026-04-25","2026-04-27","2026-04-28","2026-04-29","2026-04-30","2026-05-01","2026-05-02","2026-05-04","2026-05-05","2026-05-06","2026-05-07","2026-05-08","2026-05-09","2026-05-11","2026-05-12","2026-05-13","2026-05-14","2026-05-15","2026-05-16","2026-05-18","2026-05-19","2026-05-20","2026-05-21","2026-05-22","2026-05-23","2026-05-25","2026-05-26","2026-05-27","2026-05-28","2026-05-29","2026-05-30","2026-06-01","2026-06-02","2026-06-03","2026-06-04","2026-06-05","2026-06-06","2026-06-08","2026-06-09","2026-06-10","2026-06-11","2026-06-12","2026-06-13","2026-06-15","2026-06-16","2026-06-17","2026-06-18","2026-06-19","2026-06-20","2026-06-22","2026-06-23","2026-06-24","2026-06-25","2026-06-26","2026-06-27","2026-06-29","2026-06-30","2026-07-01","2026-07-02","2026-07-03","2026-07-04","2026-07-06","2026-07-07","2026-07-08","2026-07-09","2026-07-10","2026-07-11","2026-07-13","2026-07-14","2026-07-15","2026-07-16","2026-07-17","2026-07-18","2026-07-20","2026-07-21","2026-07-22","2026-07-23","2026-07-24","2026-07-25","2026-07-27","2026-07-28","2026-07-29","2026-07-30","2026-07-31","2026-08-01","2026-08-03","2026-08-04","2026-08-05","2026-08-06","2026-08-07","2026-08-08","2026-08-10","2026-08-11","2026-08-12","2026-08-13","2026-08-14","2026-08-15","2026-08-17","2026-08-18","2026-08-19","2026-08-20","2026-08-21","2026-08-22","2026-08-24","2026-08-25","2026-08-26","2026-08-27","2026-08-28","2026-08-29","2026-08-31","2026-09-01","2026-09-02","2026-09-03","2026-09-04","2026-09-05","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-14","2026-09-15","2026-09-16","2026-09-17","2026-09-18","2026-09-19","2026-09-21","2026-09-22","2026-09-23","2026-09-24","2026-09-25","2026-09-26","2026-09-28","2026-09-29","2026-09-30","2026-10-01","2026-10-02","2026-10-03","2026-10-05","2026-10-06","2026-10-07","2026-10-08","2026-10-09","2026-10-10","2026-10-12","2026-10-13","2026-10-14","2026-10-15","2026-10-16","2026-10-17","2026-10-19","2026-10-20","2026-10-21","2026-10-22","2026-10-23","2026-10-24","2026-10-26","2026-10-27","2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-02","2026-11-03","2026-11-04","2026-11-05","2026-11-06","2026-11-07","2026-11-09","2026-11-10","2026-11-11","2026-11-12","2026-11-13","2026-11-14","2026-11-16","2026-11-17","2026-11-18","2026-11-19","2026-11-20","2026-11-21","2026-11-23","2026-11-24","2026-11-25","2026-11-26","2026-11-27","2026-11-28","2026-11-30","2026-12-01","2026-12-02","2026-12-03","2026-12-04","2026-12-05","2026-12-07","2026-12-08","2026-12-09","2026-12-10","2026-12-11","2026-12-12","2026-12-14","2026-12-15"]; var DATEPICKER_DEFAULTS = { dateFormat: 'dd-mm-yy', format: 'g:i A', minDate: '16-12-2025' || -0, firstDay: 1, }; var DELIVERY_CUTOFF = '11:00'; var CURRENCY = '£' || '£'; /* When we search for the minimum end date, it starts on the start date i.e same-day return If that isn't possible, we try the next day, then the next, and so on This is the maximum number of days we should look ahead by before showing an error If it's exceeded, it's probably because dateCosts isn't being populated so there aren't any valid booking dates */ var MAXIMUM_END_DATE_ADJUSTMENT = 14; var ROOT_URL = "https://booking.nationaltoolhireshops.co.uk"; var DEFAULT_ERROR_MSG = $('#booking_errors').text(); var dateCosts; var product = { 'name': "400mm Petrol Wacker Plate", 'sku': "050010", 'prod_code': "4021" }; var $pickerStart = $('#datepicker_booking_start', $MODAL); var $pickerEnd = $('#datepicker_booking_end', $MODAL); var $bookingSummary = $('#booking_summary', $MODAL); var $bookingCost = $('#booking_summary .price-display-variable', $MODAL); var $numDays = $('#booking_num_days', $MODAL); var $qty = $('input[name="booking_quantity"], select[name="booking_quantity"]', $MODAL); var $bookingTotal = $('#booking_total.price-display-variable', $MODAL); var $priceSubTotals = $('.price-display-variable', $MODAL).not($bookingTotal); var $form = $('#bookingBox', $MODAL); var $overlay = $('#overlay-bookingBox', $MODAL); window.booking = { form: $form, product: product, redirectDelay: 250 } $MODAL.on('open.zf.reveal reveal:open', openBookingBox); $overlay.add('#booking_modal .closebtn').on('click', closeBookingBox); if((new URLSearchParams(window.location.search)).get('booking_modal_show') == 1) { $(document).ready(openBookingBox); } $pickerStart.datepicker($.extend({ beforeShowDay: isValidStartDate, numberOfMonths: [2,1], }, DATEPICKER_DEFAULTS)) .on('change', function () { updateDateCosts(function () { $('.booking-tabs button[data-tab-id="datepicker_booking_end"]').removeAttr('disabled') .addClass('active').siblings().removeClass('active'); $('#booking_end', $MODAL).removeClass('disabled'); $pickerEnd.datepicker('setDate', null).datepicker('show'); $pickerEnd.find('.ui-datepicker-days-cell-over').trigger('mouseenter') let validDates = Object.keys(dateCosts); if(validDates.length === 1) { let dateObj = $.datepicker.parseDate('yy-mm-dd', validDates[0]); $pickerEnd.datepicker('setDate', dateObj).trigger('change'); updateBookingOverview(); } }); }); $pickerEnd.datepicker($.extend({ beforeShowDay: isValidEndDate, numberOfMonths: [2,1] }, DATEPICKER_DEFAULTS)) .on('change', function () { validateBookingDates(); $('#bookingBox').addClass('show-booking-container'); if (window.matchMedia("(max-width: 767px)").matches) { $('#bookingBox').animate({ scrollTop: $('#booking_summary').offset().top }, 'slow'); } }); $('.ui-datepicker-div-in-menu').removeClass('ui-datepicker-div-in-menu'); $('#ui-datepicker-div').on('mouseenter', 'td', highlightBookingDates); $('.booking-tabs button[ data-tab-id="datepicker_booking_start"]').on('click', function() { $(this).siblings().removeClass( 'active' ); $(this).addClass( 'active' ); $pickerStart.datepicker('show'); }); $('.booking-tabs button[ data-tab-id="datepicker_booking_end"]').on('click', function() { $(this).siblings().removeClass( 'active' ); $(this).addClass( 'active' ); $pickerEnd.datepicker('show'); }); $('.form-quantity').each(function() { let $spinner = $(this); let $input = $spinner.find('input[type="number"]'); let $btnPlus = $spinner.find('.quantity-plus'); let $btnMinus = $spinner.find('.quantity-minus'); let min = +($input.attr('min') || 0); let max = +($input.attr('max') || 999); $spinner.on('click', '.quantity-plus, .quantity-minus', function(e) { let val = parseFloat($input.val()); if(e.currentTarget.classList.contains('quantity-plus')) { val++; } else { val--; } val = Math.min(Math.max(val, min), max); val === min ? $btnMinus.addClass('disabled') : $btnMinus.removeClass('disabled'); val === max ? $btnPlus.addClass('disabled') : $btnPlus.removeClass('disabled'); $input.val(val); updateDateCosts(); }); }); $qty.on('input', updateBookingOverview); $('input[type="number"][data-cost]', $MODAL).on('input', function() { updateExtrasCosts(); updateBookingOverview(); }); $form.on('submit', function(e) { e.preventDefault(); var $this = $(this); $this.addClass('ajax-form-loading'); var url = new URL(ROOT_URL); url.pathname = '/booking'; url.searchParams.append('edit_item_url', window.location.href.split('?')[0]); var editItemId = $('input[name="edit_item_id"]').val(); if(editItemId) { url.searchParams.append('edit_item_id', editItemId); } url.searchParams.append('prod_code', product.prod_code); url.searchParams.append('sku', product.sku); $.ajax({ type: $this.attr('method'), url: url, method: 'POST', data: $this.serialize(), xhrFields: { withCredentials: true }, success: function(response) { $this.removeClass('ajax-form-loading'); var $errorDisplay = $('#booking_errors'); $errorDisplay.addClass('d-none'); if(response.success) { $form.trigger('booking:basket-add', [getSelectedItems()]); } if(!response.success) { $errorDisplay.removeClass('d-none'); let error = response.errors ? response.errors.join('<br>') : DEFAULT_ERROR_MSG; $errorDisplay.text(error); } if(response.redirect) { setTimeout(function() { window.location.href = ROOT_URL + response.redirect; }, booking.redirectDelay) } } }); }); function getSelectedItems() { let items = [{ 'item_id': product.sku, 'item_name': product.name, 'price': product.bookedCost, 'quantity': +$qty.val() }] $('input[name^="extras"]').each(function(i, elem) { let qty = elem.type === 'checkbox' ? 1 : +elem.value; if(qty <= 0 || isNaN(qty)) return; let price = +elem.getAttribute('data-cost') * qty; if(elem.getAttribute('data-is-hired')) { price *= Math.ceil(getBookingDaysLength()/7); } items.push({ 'item_id': '', 'item_name': elem.getAttribute('data-name'), 'price': price, 'quantity': qty }); }); return items; } function openBookingBox() { $('#bookingBox').addClass('show'); $overlay.show(); // Only initialise the datepicker once if(!$('.ui-datepicker-div-in-menu').length) { $('#bookingBox .booking-calendar').append($('#ui-datepicker-div').addClass('ui-datepicker-div-in-menu')); $pickerStart.datepicker('show'); } } function closeBookingBox() { $overlay.hide(); $('#bookingBox').removeClass('show'); $('html, body').removeClass('is-reveal-open'); } function validateBookingDates() { if($pickerStart.attr('disabled') || $pickerEnd.attr('disabled')) { return false; } var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); var minimumEndDate = startDate; var daysAdjusted = 0; while(!isValidEndDate(minimumEndDate)[0] && daysAdjusted <= MAXIMUM_END_DATE_ADJUSTMENT) { minimumEndDate = new Date(minimumEndDate.getTime() + (24 * 60 * 60 * 1000)); daysAdjusted++; } if(startDate === null) { return; } $pickerEnd.datepicker('option', 'minDate', minimumEndDate); if(endDate === null) { return; } if(!isValidEndDate(endDate)[0] || !isValidEndDate(minimumEndDate)[0]) { // Validation has pushed the end date out of scope, reset it so the user can pick again $pickerEnd.datepicker('setDate', null); } $pickerEnd.datepicker('option', 'minDate', minimumEndDate); updateBookingOverview(); } /** * Per jQuery datepicker documentation: * A function that takes a date as a parameter and must return an array with: * [0]: true/false indicating whether or not this date is selectable * [1]: a CSS class name to add to the date's cell or "" for the default presentation * [2]: an optional popup tooltip for this date * The function is called for each day in the datepicker before it is displayed. */ function isValidEndDate(date) { var dateString = $.datepicker.formatDate('yy-mm-dd', date); var selectable = !!(dateCosts[dateString] && dateCosts[dateString]['cost']); var classes = ''; var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); if(date.toString() === startDate.toString()) { classes += ' datepicker-start-date'; } else if(date > startDate && date < endDate) { classes += ' datepicker-date-range'; } return [ selectable, classes, null ]; } /** * Validator for jQuery datepicker * @param date The date to be tested * @returns array [ * boolean , * string, * null * ] * */ function isValidStartDate(date) { var dateString = $.datepicker.formatDate('yy-mm-dd', date); // IE doesn't support array.includes() var selectable = VALID_START_DATES.indexOf(dateString) !== -1; return [ selectable, "", null ]; } function updateDateCosts(cb) { var data = { 'start_date': $.datepicker.formatDate(DATEPICKER_DEFAULTS.dateFormat, $pickerStart.datepicker('getDate')), 'booking_quantity': $qty.val(), 'json': true }; var editItemId = $('input[name="edit_item_id"]').val(); if(editItemId) { data['edit_item_id'] = editItemId } else { data['prod_code'] = product.prod_code; data['sku'] = product.sku } $.ajax({ url: ROOT_URL + '/booking/', datatype: 'jsonp', data: data, xhrFields: { withCredentials: true }, success: function(data) { if(typeof data === 'string') { data = JSON.parse(data); } if(data.success === true && data.costs) { for(var date in data.costs) { if(data.costs[date].cost > 0) { dateCosts = data.costs } } } if(!dateCosts) { showBookingError(); $pickerStart.attr('disabled', true); $pickerEnd.attr('disabled', true); } validateBookingDates(); if(cb && typeof cb === 'function') { cb(); } } }); } function showBookingError(text) { text = text || "Sorry, an unknown problem has been encountered. Please refresh the page and try again. If the problem persists, please contact us."; $('#booking_errors').text(text).removeClass('d-none'); } function getBookingDaysLength() { var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); if(!startDate || !endDate) { return null; } return Math.round((+endDate - +startDate) / 86400000); } function updateExtrasCosts() { $('input[data-cost]').each(function(i, elem) { var $elem = $(elem); var $priceDisplay = $('.price-display-variable[data-for="'+$elem.attr('name')+'"]'); var price = $elem.data('cost')*$elem.val(); if($elem.data('is-hired')) { price *= Math.ceil(getBookingDaysLength()/7); } $priceDisplay.text(CURRENCY + price.toFixed(2)); }); } function updateBookingOverview() { const $extendedSamedayAlert = $('#extended_sameday_alert'); const now = new Date(); var $saturdayAlert = $('#saturday_sameday_alert'); $extendedSamedayAlert.addClass('d-none'); $saturdayAlert.addClass('d-none'); updateExtrasCosts(); var days = getBookingDaysLength(); if(days === null) { $bookingSummary.addClass('d-none'); $bookingCost.text(CURRENCY + '0.00'); $numDays.text(''); return; } var startDate = $pickerStart.datepicker('getDate'); var endDate = $pickerEnd.datepicker('getDate'); var endDateString = $.datepicker.formatDate('yy-mm-dd', endDate); var cost = dateCosts[endDateString].cost*$qty.val(); const isSameDay = $.datepicker.formatDate('y-m-d', now) === $.datepicker.formatDate('y-m-d', startDate); product.bookedCost = +cost.toFixed(2); $bookingCost.text(CURRENCY + cost.toFixed(2)); // Just for display purposes days++; if(isSameDay && now.toLocaleTimeString('en-GB') >= DELIVERY_CUTOFF) { $extendedSamedayAlert.removeClass('d-none'); } if(days === 0) { days = '< 1 day'; if(startDate.getDay() === 6) { $saturdayAlert.removeClass('d-none'); } } else if(days === 1) { days += ' day'; } else { days += ' days'; } $numDays.html($qty.val() + 'x ' + product.name); $bookingTotal.text(CURRENCY + getTotalCost().toFixed(2)); $('.booking-stage-2', $MODAL).removeClass('d-none'); } function getTotalCost() { var cost = 0; for(var i=0; i<$priceSubTotals.length; i++) { var subTotal = +$($priceSubTotals[i]).text().replace(CURRENCY, ''); if(!isNaN(subTotal)) { cost += subTotal; } } $('input[type="checkbox"][data-cost]').each(function(i, elem) { let subtotal = +elem.getAttribute('data-cost'); if(elem.getAttribute('data-is-hired')) { subtotal *= Math.ceil(getBookingDaysLength()/7); } cost += subtotal; }); return cost; } function highlightBookingDates() { var $td = $(this); var $wrapper = $td.parents('#ui-datepicker-div'); var highlightClass = 'datepicker-date-range'; // Only highlight a trail of dates if this is the picker for booking_end_date and there isn't a date already selected if($('.booking-tabs button.active').attr('data-tab-id') !== $pickerEnd.attr('id') || $pickerEnd.datepicker('getDate')) { return; } $wrapper.find('.'+highlightClass).removeClass(highlightClass); $td.parent().prevAll().find('td:not(.ui-datepicker-current-day)').addClass(highlightClass); $td.prevAll().filter('td:not(.ui-datepicker-current-day)').addClass(highlightClass); let $start = $wrapper.find('.datepicker-start-date'); $start.prevAll().removeClass(highlightClass); $start.parent().prevAll().find('td').removeClass(highlightClass); } $('.extras-tooltip').on('click', function() { $(this).tooltip({ items: ".extras-tooltip", content: function () { return $(this).prop('title'); } }); $(this).tooltip("open"); }); $('.extras-tooltip').on('mouseout', function() { $(this).tooltip("destroy"); }); })(); </script> </div> <style> .reveal-modal #postcode_lookup_form { border: none; padding: 0; } .reveal-modal #postcode_lookup_form .form-group { padding: 1em 0; } </style> <div class="reveal-modal" id="postcode_modal" data-reveal> <div class="row"> <div class="twelve columns" style="padding:2em";> <style> #postcode_lookup_form { padding: 20px; border: 1px solid lightgray; max-width: 600px; margin-top: 5px; text-align: center; } #postcode_lookup_form #depot_address { width: 100%; position: relative; } #postcode_lookup_form table { position: relative; } #depot_address.admin-view::before { content: 'Admin view'; position: absolute; left: 0; top: -15px; font-size: 11px; background: #dadada; padding: 2px; } </style> <form id="postcode_lookup_form" action="/include_postcode_lookup/" method="get" class="container"> <div class="form-group"> <label>Postcode:</label> <input type="hidden" name="sku" value="050010"> <input class="input-sm" type="text" name="postcode" placeholder="Enter your postcode" required> <button type="submit">Find nearby stores</button> </div> <div class="form-group hide"> <table class="twelve"> <tbody id="depot_address" class=""></tbody> </table> </div> </form> <script> (function() { var $form = $('#postcode_lookup_form'); var $addresses = $('#depot_address'); var readOnly = !!"1"; var adminView = !!""; $form.on('submit', function(e) { e.preventDefault(); var $this = $(this); $.ajax({ type: $this.attr('method') || 'post', url: $this.attr('action') || '', data: $this.serialize(), complete: handleFormSubmit }); }); function handleFormSubmit(response) { var depots = JSON.parse(response.responseText); if(!depots) { return; } if(readOnly) { $addresses.find('tr').remove(); $addresses.parents('.hide').removeClass('hide'); for(var i=0; i<depots.length; i++) { var html = '<tr><td class="text-center">'; if(adminView) { html += depots[i].supplierName + ', ' + depots[i].address } else { html += depots[i].name + ', ' + depots[i].postcode.split(' ')[0]; } if(depots[i].distance && depots[i].distanceUnits) { if(depots[i].distance > 1) { depots[i].distance = Math.round(depots[i].distance); } html += ' - (' + depots[i].distance + ' ' + depots[i].distanceUnits + ' away)' } html += '</td></tr>'; $addresses.append(html); } } else { $addresses.find(':not([value=""])').remove(); $addresses.parents('.hide').removeClass('hide'); for(var i=0; i<depots.length; i++) { var html = '<option value="' + depots[i].id + '">' + depots[i].name + ', ' + depots[i].postcode; if(depots[i].distance && depots[i].distanceUnits) { if(depots[i].distance > 1) { depots[i].distance = Math.round(depots[i].distance); } html += ' - (' + depots[i].distance + ' ' + depots[i].distanceUnits + ' away)' } html += '</option>'; $addresses.append(html); $addresses.trigger('change'); } } } })(); </script> </div> </div> </div> </section> <div id="write-review" class="c-review-form reveal-modal" style="display: none"> <h3 class="t2">Write a review for "400mm Petrol Wacker Plate"</h3> <form enctype="multipart/form-data" class="custom" action="/product/400mm-wacker-plate-hire" method="post"> <input type="hidden" name="ls_session_key" value="lsk693ee98903ace8.02575168"/> <label for="rating">Rating</label> <select name="rating" id="rating" style="font-size: 1em; margin-bottom: 1em; height: 2em;"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <label for="review_author_name">Your name</label> <input id="review_author_name" name="review_author_name" type="text" /> <label for="review_author_email">Email</label> <input id="review_author_email" type="text" name="review_author_email" /> <label for="review_title">Title</label> <input id="review_title" name="review_title" type="text" /> <label for="review_text">Review</label> <textarea rows="5" id="review_text" name="review_text" /></textarea> <button type="submit" class="btn button" style="background-color: #00b67A;" onclick="return $(this).getForm().sendRequest('shop:on_addProductReview', { extraFields: { no_flash: true, }, onSuccess: function() { $('#write-review').trigger('reveal:close'); document.location.reload(true); } })">Submit review</button> </form> <a class="close-reveal-modal">&#215;</a> </div> <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "name": "400mm Petrol Wacker Plate", "image": "https://www.nationaltoolhireshops.co.uk/uploaded/thumbnails/400mm_Petrol_Wacker_Plate_Hire_4973_400x400.jpg", "description": "400mm petrol vibrating plates flatten hardcore, concrete, asphalt, tarmac, soil & more, and they are ideal for roadworks & landscaping.", "mpn": "050010", "model": "050010", "sku": "050010", "manufacturer": "National Tool Hire", "brand": { "@type": "Brand", "name": "National Tool Hire" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "5", "reviewCount": "4" }, "offers": { "@type": "Offer", "itemCondition": "http://schema.org/NewCondition", "availability": "http://schema.org/InStock", "price": "46.99", "priceCurrency": "GBP", "priceValidUntil": "2025-12-21", "url": "https://www.nationaltoolhireshops.co.uk/product/400mm-wacker-plate-hire/", "shippingDetails": { "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "GB" }, "shippingRate": { "@type": "MonetaryAmount", "value": 0.00, "currency": "GBP" }, "deliveryTime": { "@type": "ShippingDeliveryTime", "businessDays": { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "https://schema.org/Monday", "https://schema.org/Tuesday", "https://schema.org/Wednesday", "https://schema.org/Thursday", "https://schema.org/Friday", "https://schema.org/Saturday" ] }, "cutoffTime": "11:30:00Z", "handlingTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 2, "unitCode": "d" }, "transitTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "d" } } }, "seller": { "@type": "Organization", "name": "National Tool Hire" }, "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "applicableCountry": "GB", "returnPolicyCategory": "https://schema.org/MerchantReturnUnlimitedWindow", "merchantReturnDays": 365, "returnMethod": "ReturnByMail", "returnFees": "FreeReturn" } } } </script> ', 86400) /modules/cms/classes/cms_controller.php 1031
13 Cms_Controller->render_partial('shop:product5_2021', array(1) [product => object(Shop_Product)], array(4) [cache => '1', cache_vary_by => array(1), cache_versions => array(1), cache_ttl => '86400']) /modules/cms/classes/cms_controller.php(383) : eval()'d code 95
12 eval(()) /modules/cms/classes/cms_controller.php 383
11 Cms_Controller->evalWithException('?><div class="row"> <div class="twelve columns"> <div class="cat-breadcrumbs pt4" itemscope itemtype="https://schema.org/BreadcrumbList"> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="/" itemprop="item"><span itemprop="name">Home</span></a><meta itemprop="position" content="1" /></span> <?php $pos = 2; if ($primaryBreadcrumbs = ShopPrimaryCategory::getPrimaryBreadcrumbs($product)) : ?> <? $i=1; foreach ($primaryBreadcrumbs as $breadcrumb): ?> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> &gt; <a href="<?= rtrim($breadcrumb->page_url('/category'), '/') ?>/" data-gtm="Breadcrumb (P)" itemprop="item"><span itemprop="name"><?= $breadcrumb->name ?></span></a><meta itemprop="position" content="<?php echo $pos; ?>" /> <?php if ($i < count($primaryBreadcrumbs)): ?> <span class="breadcrumb-hover"> <span> <?php if ($breadcrumb->list_children('front_end_sort_order')->count): ?> <div class="breadcrumb-category"> <?php foreach ($breadcrumb->list_children('front_end_sort_order') as $subcategory): ?> <? if(!empty($subcategory->x_catfalse)): ?> <a href="<?= $subcategory->x_catfalse ?>" title="<?= h($subcategory->name) ?>" data-gtm="Breadcrumb Pop (P)"><?= h($subcategory->name) ?></a> <? else: ?> <a href="<?= $subcategory->page_url('category') ?>/" title="<?= h($subcategory->name) ?>" data-gtm="Breadcrumb Pop (P)"><?= h($subcategory->name) ?></a> <? endif ?> <?php endforeach; ?> </div> <?php endif; ?> </span> </span> <?php else: ?> <?php if ($breadcrumb->eval_num_of_products()): ?> <span class="breadcrumb-hover"> <span> <div class="breadcrumb-category"> <p style="margin-bottom: 9px;"><strong>Top Products</strong></p> <?php $products = $breadcrumb->list_products(array('sorting'=>array('price desc')))->limit(3)->find_all(); ?> <?php foreach ($products as $breadcrumbProduct): ?> <a href="<?php echo $breadcrumbProduct->page_url('product'); ?>/" data-gtm="Breadcrumb Pop (P)"><?php echo $breadcrumbProduct->name; ?></a> <?php endforeach; ?> <a href="<?= $breadcrumb->page_url('category') ?>/">View All</a> </div> </span> </span> <?php endif; ?> <?php endif; ?> </span> <? $i++; $pos++; endforeach ?> <?php endif; ?> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">&nbsp;>&nbsp;<span itemprop="name"><?php echo $product->name; ?></span><meta itemprop="position" content="<?php echo $pos; ?>" /></span> </div> </div> </div> <section class="content"> <? if( $product->x_bookpay == 200): ?> <section id="product" class="product top block" style="margin:15px;"> <?php $this->render_partial('shop:product3', array( 'product' => $product ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </section> <? elseif( $product->x_bookpay == 201): ?> <section id="product" class="product top block" style="margin:15px;"> <?php $this->render_partial('shop:product4', array( 'product' => $product ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </section> <? elseif( $product->x_bookpay == 202): ?> <section id="product" class="product top block" style="margin:15px;"> <?php $this->render_partial('shop:product5_2021', array( 'product' => $product ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </section> <? elseif( $product->x_bookpay == 123): ?> <section id="product" class="product top block" style="margin:15px;"> <?php $this->render_partial('shop:product_training', array( 'product' => $product ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </section> <? else: ?> <section id="product" class="product top block" style="margin:15px;"> <?php $this->render_partial('shop:product2', array( 'product' => $product ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </section> <?php endif; ?> </section> </div> </section> <?= $this->render_partial('white_diesel_modal') ?> <?= $this->render_partial('insurance_modal') ?> <?= $this->render_partial('deposit_modal') ?> <?= $this->render_partial('id_modal') ?> <?= $this->render_partial('paypal_modal') ?> <script> window.booking.form.on('booking:basket-add', function(e, items) { dataLayer.push({ 'event' : 'add_to_cart', 'ecommerce' : { 'items': items } }); }); //dataLayer = []; dataLayer.push({ 'event' : 'view_item', 'ecommerce' : { 'items': [{ 'item_id': '<?php echo $product->sku; ?>', 'item_name': '<?php echo $product->name ?>', 'price': '<?php if($product->om('is_on_sale')): ?><?php echo $product->om('sale_price'); ?><?php else: ?><?php echo $product->om('price') ?><?php endif; ?>' }] } }); </script>', 'CMS page', '400mm Petrol Wacker Plate') /modules/cms/classes/cms_controller.php 608
10 Cms_Controller->eval_page_content(()) /modules/cms/classes/cms_controller.php 198
9 Cms_Controller->open(object(Cms_Page), array(1) [0 => '400mm-wacker-plate-hire']) /controllers/application.php 72
8 Application->On404(())
7 call_user_func_array(array(2) [0 => object(Application), 1 => 'On404'], array(0)) /phproad/modules/phpr/classes/phpr_controller.php 170
6 Phpr_Controller->executeAction('On404', array(0)) /phproad/modules/phpr/classes/phpr_controller.php 84
5 Phpr_Controller->_run('On404', array(0)) /phproad/modules/phpr/classes/phpr_response.php 64
4 Phpr_Response->open404(()) /phproad/modules/phpr/classes/phpr_response.php 37
3 Phpr_Response->open('/product/400mm-wacker-plate-hire') /phproad/system/phproad.php 31
2 include('/var/www/vhosts/nationaltoolhireshops.co.uk/httpdocs/phproad/system/phproad.php') /boot.php 114
1 require_once('/var/www/vhosts/nationaltoolhireshops.co.uk/httpdocs/boot.php') /index.php 3