Hire Ortlieb 40L Pannier BagsUTO (ex Eovolt)< { "@context": "http://schema.org/", "@type": "Product", "name": "Gloria Summer Jersey x Gobik", "url": "https:\/\/projektride.co.uk\/products\/gloria-summer-jersey-x-gobik","image": [ "https:\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-172_1365x.webp?v=1747758543" ],"description": "","brand": { "@type": "Thing", "name": "Gloria" },"offers": [{ "@type" : "Offer","availability" : "http://schema.org/InStock", "price" : 55.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/gloria-summer-jersey-x-gobik?variant=55482684965247" }, { "@type" : "Offer","availability" : "http://schema.org/InStock", "price" : 55.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/gloria-summer-jersey-x-gobik?variant=55482687357311" } ] } Open cart
translation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const£0.00
<
Othera class="product__media product__media--featured"
href="/collections/gloria-clothing/products/kryptolok-standard-u-lock-with-4-foot-kryptoflex-cable-hire"
title="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable"
aria-label="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable"
style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-03-09at20.04.46_560e2033-8232-4bd3-a423-3ce8c9f11849_600x.png?v=1691610428)">
.Amflow
span class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable.
>
>
Enigma
span class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable.
Product DetailsCustom Builds> .
>
Yeti
>Singular
a class="product__media product__media--featured"
href="/collections/gloria-clothing/products/hire-bike-packing-bundle"
title="HIRE - BIKE PACKING BUNDLE"
aria-label="HIRE - BIKE PACKING BUNDLE"
style="background-image: url(//projektride.co.uk/cdn/shop/files/Yourparagraphtext_600x.png?v=1747481130)">
>
{{/if}}
span class="visually-hidden">HIRE - BIKE PACKING BUNDLE
>
Ortlieb Back-Roller 40L Pannier Bags - ProjektRide Bike Hire Edinburgh.Cycle To Work Schemes
Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable
RidgebackSupplied as a pair, these rear pannier bags have hermetical roll closures, shoulder straps so you can take them with you at your destination and the ORTLIEB QL System which ensures food and equipment are both protected and easily accessible.Insure Your Bike£0.00
li class="result">
Brother
div class="result__image" data-aspectratio="{{ it.product.image.aspectRatio }}" data-product-image>
Durable polyester fabric make this pannier a long lasting touring companion. The waterproof roll closure ensures safe and waterproof storage of food and equipment. With its QL2.1 fixing it is quickly mounted and taken off the bike rack. A shoulder strap provides carrying comfort when taken off the rack.
a href="{{ it.product.url }}" class="result__image-link" aria-label='{{ it.product.title }}'>
HIRE - BIKE PACKING BUNDLE
div class="result__image-img product__media lazyload fade-in"
data-bgset="{{ it.product.image.thumb }}"
data-aspectratio="{{ it.product.image.aspectRatio }}"
data-sizes="auto">
{{@if(it.product.badgeText)}}
Genesis
div class="product__tag{{ it.product.badgeClasses }}">
Parts & Components
span>{{ it.product.badgeText | safe }}
window._RestockRocketConfig = window._RestockRocketConfig || {}
// Helper function to normalize locale format from hyphen to underscore (e.g., 'en-US' -> 'en_us')
// This matches the backend's Mobility.normalize_locale behavior
// Returns empty string if locale is empty or invalid (matches original behavior)
function normalizeLocale(locale) {
if (!locale || locale.trim() === '') {
return '';
}
return locale.toString().toLowerCase().replace(/-/g, '_');
}
window._RestockRocketConfig.locale = 'en';
window._RestockRocketConfig.normalizedLocale = normalizeLocale('en');
window._RestockRocketConfig.shop = 'projektride.myshopify.com';
window._RestockRocketConfig.pageType = 'product';
window._RestockRocketConfig.liquidRenderedAt = 1772748968;window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom';
window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-12-28T14:44:23.508Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{"disableDebugLoggingForNonPreorderItem":false},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_lab
My AccountPedals
_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected!
dated_at":"2026-03-05T22:02:58Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Open cartGears & Drivetrain
item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I ac
[]
_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];(function() {
const cachedData = {"plans":[{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Sh
Components
ill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[713813721471,713176482175],"cached_at":"2026-02-18T08:36:42Z"};
if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) {
// Find the maximum updated_at from all items in old array
const oldPlans = window._RestockRocketConfig.sellingPlans;
const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0
? oldPlans.reduce(function(max, plan) {
// Parse dates for proper comparison (handles mixed ISO formats)
if (plan.updated_at) {
const planDate = new Date(plan.updated_at);
const maxDate = max ? new Date(max) : null;
return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max;
}
return max
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Shimano MTB Deore XT - 10 Speed Chain CN-HG95",
"url": "https:\/\/projektride.co.uk\/products\/shimano-deore-xt-10-speed-chain-cn-hg95","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2021-12-17at13.26.01_1178x.png?v=1639747630"
],"description": "\n\nHyperglide (HG-X) series 10-speed directional Dyna-Sys compatible chain for use with 10-speed MTB drivetrains\nHG-X Chain uses a directional design with specifically shaped inner and outer plates to optimise shifting over the chainset and cassette\nOuter plate design has been developed to reduce the chance of chain suck\nThe inner plate has been developed for better contact with gears providing smoother shifting under high load, giving efficient pedalling, increased rigidity and near silent running\nDurability is assured through a chromising treatment on link pins, and the heat treatment of rollers, pins, and plates\nOpen design of inner links increase mud shedding ability\nMushrooming of the pins gives unsurpassed side-plate retention, enabling the chain to far exceed the BS\/ISO standard for breaking force\nChain is optimised for Shimano 10-speed HG-X MTB drivetrains only\nSil-Tec surface treatment technology (PTFE plating) that is smooth running and increases durability\nCorrosion-resistant Zinc-alloy plating and grey finish on inner and outer plates\n114 links, 273 grams\n\n\n\nSpeed\n10 Speed\n\n","sku": "CNHG95116","brand": {
"@type": "Thing",
"name": "Shimano"
},"gtin8": "4524667984665","gtin13": "4524667984665","offers": [{
"@type" : "Offer","sku": "CNHG95116","availability" : "http://schema.org/InStock",
"price" : 34.99,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/shimano-deore-xt-10-speed-chain-cn-hg95?variant=42170955464930"
}
]
}
Bike Hire FAQem_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I ackn
rsey x Gobik - Extra Large","public_title":"Extra Large","options":["Extra Large"],"price":5500,"weight":0,"compare_at_price":5500,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-172.webp?v=1747758543","\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-138.webp?v=1747758550","\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-140.webp?v=1747758556","\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-170.webp?v=1747758562","\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-171.webp?v=1747758569"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-172.webp?v=1747758543","options":["Size"],"media":[{"alt":null,"id":65914389266815,"position":1,"preview_image":{"aspect_ratio":0.667,"height":2048,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-172.webp?v=1747758543"},"aspect_ratio":0.667,"height":2048,"media_type":"image","sr
>
<p class="result__title">
My Account
<
,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-170.webp?v=1747758562","width":1365},{"alt":null,"id":65914400702847,"position":5,"preview_image":{"aspect_ratio":0.667,"height":2048,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-171.webp?v=1747758569"},"aspect_ratio":0.667,"height":2048,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gloriaapparel-171.webp?v=1747758569","width":1365}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003e\u003cimg\u003e\u003c\/p\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {55482684965247 : "deny",55482687357311 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {55482684965247 : parseInt("1"),55482687357311 : parseInt("0"),};
window._RestockRocketConfig.variantsPreorderCount = {55482684965247 : parseInt(""),55482687357311 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {55482684965247 :
>
- ensions/019cb0b4-f8c1-740a-9811-1284dd89b0c8/restock-rocket-shopify-464/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds const LIQUID_CACHE_MAX_AGE = 2 * 60 * 60; // 2 hours in seconds // Calculate Liquid cache freshness once at initialization const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; // Validate timestamp and calculate cache age if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { const now = Math.floor(Date.now() / 1000); // Current time in seconds const liquidCach < Wheels = LIQUID_CACHE_MAX_AGE) { console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); window._RestockRocketConfig.isLiquidCacheFresh = false; } } function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no hedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); // Setup cart selling plan updater BEFORE loading any scripts to avoid race conditions setupCartSellingPlanUpdater(settings); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketCon fig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder_search_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'product') { createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enab
- Contact Us <
- li class="result"> <a href="{{ it.product.url }}" class="result__image-link" aria-label='{{ it.product.title }}'> FinanceHIRE - BIKE PACKING BUNDLE< for more information. If you are returning your bike on a Sunday, please add a note to your order with your number and your ETA return date so we can arrange your drop off out-of-hours. >






