mirror of
https://github.com/vercel/commerce.git
synced 2025-07-23 04:36:49 +00:00
add inlinks for engine sites
Signed-off-by: Chloe <pinkcloudvnn@gmail.com>
This commit is contained in:
@@ -43,6 +43,7 @@ export const CORE_WAIVER = 'core-waiver';
|
||||
export const CORE_VARIANT_ID_KEY = 'coreVariantId';
|
||||
|
||||
export const TRANSMISSION_CODE_FILTER_ID = 'filter.p.m.custom.transmission_code';
|
||||
export const ENGINE_SIZE_FILTER_ID = 'filter.p.m.custom.engine_size';
|
||||
export const AVAILABILITY_FILTER_ID = 'filter.v.availability';
|
||||
export const PRICE_FILTER_ID = 'filter.v.price';
|
||||
export const MAKE_FILTER_ID = 'filter.p.m.custom.make_composite';
|
||||
@@ -69,3 +70,10 @@ export const WARRANTY_FIELDS = [
|
||||
'warranty_activation_vin',
|
||||
'warranty_activation_mileage'
|
||||
];
|
||||
|
||||
export const URL_PREFIXES = [
|
||||
'/transmissions',
|
||||
'/engines',
|
||||
'/transfer-cases',
|
||||
'/remanufactured-engines'
|
||||
];
|
||||
|
@@ -1177,19 +1177,22 @@ export const getFile = async (id: string) => {
|
||||
};
|
||||
|
||||
export async function getProductFilters(
|
||||
{ collection, make }: { collection: string; make?: string },
|
||||
{ collection, make }: { collection: string; make?: string | string[] },
|
||||
filterId: string
|
||||
): Promise<Filter | null | undefined> {
|
||||
const [namespace, metafieldKey] = MAKE_FILTER_ID.split('.').slice(-2);
|
||||
const _make = Array.isArray(make) ? make : make ? [make] : undefined;
|
||||
|
||||
const res = await shopifyFetch<ShopifyCollectionProductsOperation>({
|
||||
query: getTransmissionCodesQuery,
|
||||
tags: [TAGS.collections, TAGS.products],
|
||||
variables: {
|
||||
handle: collection,
|
||||
...(make
|
||||
...(_make
|
||||
? {
|
||||
filters: [{ productMetafield: { namespace, key: metafieldKey, value: make } }]
|
||||
filters: _make.map((make) => ({
|
||||
productMetafield: { namespace, key: metafieldKey, value: make }
|
||||
}))
|
||||
}
|
||||
: {})
|
||||
}
|
||||
@@ -1202,5 +1205,6 @@ export async function getProductFilters(
|
||||
|
||||
const filters = res.body.data.collection.products.filters;
|
||||
const selectedFilters = filters.find((filter) => filter.id === filterId);
|
||||
|
||||
return selectedFilters ? reshapeFilters([selectedFilters], false)[0] : null;
|
||||
}
|
||||
|
18
lib/utils.ts
18
lib/utils.ts
@@ -145,7 +145,23 @@ export const isBeforeToday = (date?: string | null) => {
|
||||
};
|
||||
|
||||
export const getCollectionUrl = (handle: string, includeSlashPrefix = true) => {
|
||||
const rewriteUrl = handle.split('-').filter(Boolean).join('/');
|
||||
let rewriteUrl = '';
|
||||
const enginesPattern = /^\/?remanufactured-engines(-.+)?$/;
|
||||
const transferCasesPattern = /^\/?transfer-cases(-.+)?$/;
|
||||
|
||||
if (enginesPattern.test(handle)) {
|
||||
rewriteUrl = handle
|
||||
.replace(/-/g, '/')
|
||||
.replace('/engines/', '-engines/')
|
||||
.replace('/engines', '-engines');
|
||||
} else if (transferCasesPattern.test(handle)) {
|
||||
rewriteUrl = handle
|
||||
.replace(/-/g, '/')
|
||||
.replace('/cases/', '-cases/')
|
||||
.replace('/cases', '-cases');
|
||||
} else {
|
||||
rewriteUrl = handle.split('-').filter(Boolean).join('/');
|
||||
}
|
||||
|
||||
return includeSlashPrefix ? `/${rewriteUrl}` : rewriteUrl;
|
||||
};
|
||||
|
Reference in New Issue
Block a user