Added SEO and added several features.
This commit is contained in:
parent
644d9743a9
commit
a69dcea800
15
config/cron-tasks.ts
Normal file
15
config/cron-tasks.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
export default {
|
||||
/**
|
||||
* Simple example.
|
||||
* Every monday at 1am.
|
||||
*/
|
||||
|
||||
myJob: {
|
||||
task: ({ strapi }) => {
|
||||
// Add your own logic here (e.g. send a queue of email, create a database backup, etc.).
|
||||
},
|
||||
options: {
|
||||
rule: "0 0 1 * * 1",
|
||||
},
|
||||
},
|
||||
};
|
|
@ -1 +1,5 @@
|
|||
export default () => ({});
|
||||
export default () => ({
|
||||
seo: {
|
||||
enabled: true,
|
||||
},
|
||||
});
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
import cronTasks from "./cron-tasks";
|
||||
|
||||
export default ({ env }) => ({
|
||||
host: env('HOST', '0.0.0.0'),
|
||||
port: env.int('PORT', 1337),
|
||||
app: {
|
||||
keys: env.array('APP_KEYS'),
|
||||
},
|
||||
cron: {
|
||||
enabled: true,
|
||||
tasks: cronTasks,
|
||||
},
|
||||
webhooks: {
|
||||
populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false),
|
||||
},
|
||||
|
|
4
package-lock.json
generated
4
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "dashersupply-strapi-docker",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "dashersupply-strapi-docker",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@strapi/plugin-cloud": "4.25.4",
|
||||
|
|
11
package.json
11
package.json
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "dashersupply-strapi-docker",
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"description": "A Strapi application",
|
||||
"scripts": {
|
||||
"develop": "strapi develop",
|
||||
|
@ -12,10 +12,11 @@
|
|||
},
|
||||
"devDependencies": {},
|
||||
"dependencies": {
|
||||
"@strapi/strapi": "4.25.4",
|
||||
"@strapi/plugin-users-permissions": "4.25.4",
|
||||
"@strapi/plugin-i18n": "4.25.4",
|
||||
"@strapi/plugin-cloud": "4.25.4",
|
||||
"@strapi/strapi": "4.25.5",
|
||||
"@strapi/plugin-users-permissions": "4.25.5",
|
||||
"@strapi/plugin-i18n": "4.25.5",
|
||||
"@strapi/plugin-cloud": "4.25.5",
|
||||
"@strapi/plugin-seo": "1.9.9",
|
||||
"pg": "8.8.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0",
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"kind": "singleType",
|
||||
"collectionName": "amazon_pa_api_configs",
|
||||
"info": {
|
||||
"singularName": "amazon-pa-api-config",
|
||||
"pluralName": "amazon-pa-api-configs",
|
||||
"displayName": "Amazon PA API Config",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": false
|
||||
},
|
||||
"pluginOptions": {},
|
||||
"attributes": {
|
||||
"accessKey": {
|
||||
"type": "string"
|
||||
},
|
||||
"secretKey": {
|
||||
"type": "string"
|
||||
},
|
||||
"partnerType": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"Associates"
|
||||
]
|
||||
},
|
||||
"partnerTag": {
|
||||
"type": "string",
|
||||
"regex": "^[A-Za-z0-9\\-]+-\\d{2}$"
|
||||
},
|
||||
"marketplace": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"https://www.amazon.com",
|
||||
"https://www.amazon.co.uk",
|
||||
"https://www.amazon.com.au",
|
||||
"https://www.amazon.com.be",
|
||||
"https://www.amazon.com.br",
|
||||
"https://www.amazon.ca",
|
||||
"https://www.amazon.eg",
|
||||
"https://www.amazon.fr",
|
||||
"https://www.amazon.de",
|
||||
"https://www.amazon.in",
|
||||
"https://www.amazon.it",
|
||||
"https://www.amazon.co.jp",
|
||||
"https://www.amazon.com.mx",
|
||||
"https://www.amazon.nl",
|
||||
"https://www.amazon.pl",
|
||||
"https://www.amazon.sg",
|
||||
"https://www.amazon.sa",
|
||||
"https://www.amazon.es",
|
||||
"https://www.amazon.se",
|
||||
"https://www.amazon.com.tr",
|
||||
"https://www.amazon.ae"
|
||||
]
|
||||
},
|
||||
"service": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"ProductAdvertisingAPIv1"
|
||||
]
|
||||
},
|
||||
"host": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"webservices.amazon.com.au",
|
||||
"webservices.amazon.com.be",
|
||||
"webservices.amazon.com.br",
|
||||
"webservices.amazon.ca",
|
||||
"webservices.amazon.eg",
|
||||
"webservices.amazon.fr",
|
||||
"webservices.amazon.de",
|
||||
"webservices.amazon.in",
|
||||
"webservices.amazon.it",
|
||||
"webservices.amazon.co.jp",
|
||||
"webservices.amazon.com.mx",
|
||||
"webservices.amazon.nl",
|
||||
"webservices.amazon.pl",
|
||||
"webservices.amazon.sg",
|
||||
"webservices.amazon.sa",
|
||||
"webservices.amazon.es",
|
||||
"webservices.amazon.se",
|
||||
"webservices.amazon.com.tr",
|
||||
"webservices.amazon.ae",
|
||||
"webservices.amazon.co.uk",
|
||||
"webservices.amazon.com"
|
||||
]
|
||||
},
|
||||
"region": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"us-east-1",
|
||||
"us-west-2",
|
||||
"eu-west-1"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* amazon-pa-api-config controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::amazon-pa-api-config.amazon-pa-api-config');
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* amazon-pa-api-config router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::amazon-pa-api-config.amazon-pa-api-config');
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* amazon-pa-api-config service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::amazon-pa-api-config.amazon-pa-api-config');
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"kind": "collectionType",
|
||||
"collectionName": "amazon_pa_api_updates",
|
||||
"info": {
|
||||
"singularName": "amazon-pa-api-update",
|
||||
"pluralName": "amazon-pa-api-updates",
|
||||
"displayName": "Amazon PA-API Updates",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": false
|
||||
},
|
||||
"pluginOptions": {},
|
||||
"attributes": {
|
||||
"scheduledStartTime": {
|
||||
"type": "datetime"
|
||||
},
|
||||
"taskStartedTime": {
|
||||
"type": "datetime"
|
||||
},
|
||||
"taskEndedTime": {
|
||||
"type": "datetime"
|
||||
},
|
||||
"taskStatus": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"Scheduled",
|
||||
"Started",
|
||||
"Finished",
|
||||
"Error"
|
||||
]
|
||||
},
|
||||
"signedRequest": {
|
||||
"type": "string"
|
||||
},
|
||||
"jsonRequestPayload": {
|
||||
"type": "json"
|
||||
},
|
||||
"jsonResponse": {
|
||||
"type": "json"
|
||||
},
|
||||
"productsAffected": {
|
||||
"type": "relation",
|
||||
"relation": "manyToMany",
|
||||
"target": "api::product.product",
|
||||
"inversedBy": "amazonPAAPIUpdates"
|
||||
},
|
||||
"jobSummary": {
|
||||
"type": "text"
|
||||
},
|
||||
"log": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* amazon-pa-api-update controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::amazon-pa-api-update.amazon-pa-api-update');
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* amazon-pa-api-update router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::amazon-pa-api-update.amazon-pa-api-update');
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* amazon-pa-api-update service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::amazon-pa-api-update.amazon-pa-api-update');
|
|
@ -4,7 +4,8 @@
|
|||
"info": {
|
||||
"singularName": "brand",
|
||||
"pluralName": "brands",
|
||||
"displayName": "Brand"
|
||||
"displayName": "Brand",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": true
|
||||
|
@ -48,11 +49,12 @@
|
|||
"type": "blocks"
|
||||
},
|
||||
"logoImage": {
|
||||
"type": "media",
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"allowedTypes": [
|
||||
"images"
|
||||
],
|
||||
"type": "media",
|
||||
"multiple": false,
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
|
@ -64,6 +66,16 @@
|
|||
"relation": "oneToMany",
|
||||
"target": "api::product.product",
|
||||
"mappedBy": "brand"
|
||||
},
|
||||
"seo": {
|
||||
"type": "component",
|
||||
"repeatable": false,
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"component": "shared.seo"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,6 +70,16 @@
|
|||
"relation": "manyToMany",
|
||||
"target": "api::product.product",
|
||||
"mappedBy": "categories"
|
||||
},
|
||||
"seo": {
|
||||
"type": "component",
|
||||
"repeatable": false,
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"component": "shared.seo"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"kind": "singleType",
|
||||
"collectionName": "google_ad_senses",
|
||||
"info": {
|
||||
"singularName": "google-ad-sense",
|
||||
"pluralName": "google-ad-senses",
|
||||
"displayName": "Google AdSense",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": false
|
||||
},
|
||||
"pluginOptions": {},
|
||||
"attributes": {
|
||||
"adsTxt": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
7
src/api/google-ad-sense/controllers/google-ad-sense.ts
Normal file
7
src/api/google-ad-sense/controllers/google-ad-sense.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* google-ad-sense controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::google-ad-sense.google-ad-sense');
|
7
src/api/google-ad-sense/routes/google-ad-sense.ts
Normal file
7
src/api/google-ad-sense/routes/google-ad-sense.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* google-ad-sense router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::google-ad-sense.google-ad-sense');
|
7
src/api/google-ad-sense/services/google-ad-sense.ts
Normal file
7
src/api/google-ad-sense/services/google-ad-sense.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* google-ad-sense service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::google-ad-sense.google-ad-sense');
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"kind": "singleType",
|
||||
"collectionName": "google_analyticss",
|
||||
"info": {
|
||||
"singularName": "google-analytics",
|
||||
"pluralName": "google-analyticss",
|
||||
"displayName": "Google Analytics",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": false
|
||||
},
|
||||
"pluginOptions": {},
|
||||
"attributes": {
|
||||
"gTag": {
|
||||
"type": "string",
|
||||
"regex": "^[G][-][A-Z0-9]+$"
|
||||
}
|
||||
}
|
||||
}
|
7
src/api/google-analytics/controllers/google-analytics.ts
Normal file
7
src/api/google-analytics/controllers/google-analytics.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* google-analytics controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::google-analytics.google-analytics');
|
7
src/api/google-analytics/routes/google-analytics.ts
Normal file
7
src/api/google-analytics/routes/google-analytics.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* google-analytics router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::google-analytics.google-analytics');
|
7
src/api/google-analytics/services/google-analytics.ts
Normal file
7
src/api/google-analytics/services/google-analytics.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* google-analytics service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::google-analytics.google-analytics');
|
83
src/api/marketplace/content-types/marketplace/schema.json
Normal file
83
src/api/marketplace/content-types/marketplace/schema.json
Normal file
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"kind": "collectionType",
|
||||
"collectionName": "marketplaces",
|
||||
"info": {
|
||||
"singularName": "marketplace",
|
||||
"pluralName": "marketplaces",
|
||||
"displayName": "Marketplace",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": true
|
||||
},
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
"name": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"slug": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"shortDescription": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "blocks"
|
||||
},
|
||||
"description": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "blocks"
|
||||
},
|
||||
"logoImage": {
|
||||
"type": "media",
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"allowedTypes": [
|
||||
"images"
|
||||
],
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"disclaimer": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "blocks"
|
||||
},
|
||||
"seo": {
|
||||
"type": "component",
|
||||
"repeatable": false,
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"component": "shared.seo"
|
||||
}
|
||||
}
|
||||
}
|
7
src/api/marketplace/controllers/marketplace.ts
Normal file
7
src/api/marketplace/controllers/marketplace.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* marketplace controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::marketplace.marketplace');
|
7
src/api/marketplace/routes/marketplace.ts
Normal file
7
src/api/marketplace/routes/marketplace.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* marketplace router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::marketplace.marketplace');
|
7
src/api/marketplace/services/marketplace.ts
Normal file
7
src/api/marketplace/services/marketplace.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* marketplace service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::marketplace.marketplace');
|
|
@ -73,6 +73,33 @@
|
|||
"relation": "manyToMany",
|
||||
"target": "api::tag.tag",
|
||||
"inversedBy": "products"
|
||||
},
|
||||
"components": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "dynamiczone",
|
||||
"components": [
|
||||
"product.amazon-site-stripe-details"
|
||||
]
|
||||
},
|
||||
"amazonPAAPIUpdates": {
|
||||
"type": "relation",
|
||||
"relation": "manyToMany",
|
||||
"target": "api::amazon-pa-api-update.amazon-pa-api-update",
|
||||
"mappedBy": "productsAffected"
|
||||
},
|
||||
"seo": {
|
||||
"type": "component",
|
||||
"repeatable": false,
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"component": "shared.seo"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
69
src/api/site/content-types/site/schema.json
Normal file
69
src/api/site/content-types/site/schema.json
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"kind": "singleType",
|
||||
"collectionName": "sites",
|
||||
"info": {
|
||||
"singularName": "site",
|
||||
"pluralName": "sites",
|
||||
"displayName": "Site",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": true
|
||||
},
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
"siteName": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"categoriesCallout": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "blocks"
|
||||
},
|
||||
"siteUrl": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "string",
|
||||
"regex": "^https{0,1}:\\/\\/[A-Za-z0-9\\.\\-_]+$"
|
||||
},
|
||||
"metaDescription": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "text"
|
||||
},
|
||||
"brandsCallout": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "blocks"
|
||||
},
|
||||
"marketplacesCallout": {
|
||||
"pluginOptions": {
|
||||
"i18n": {
|
||||
"localized": true
|
||||
}
|
||||
},
|
||||
"type": "blocks"
|
||||
}
|
||||
}
|
||||
}
|
7
src/api/site/controllers/site.ts
Normal file
7
src/api/site/controllers/site.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* site controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::site.site');
|
7
src/api/site/routes/site.ts
Normal file
7
src/api/site/routes/site.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* site router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::site.site');
|
7
src/api/site/services/site.ts
Normal file
7
src/api/site/services/site.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* site service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::site.site');
|
16
src/components/product/amazon-site-stripe-details.json
Normal file
16
src/components/product/amazon-site-stripe-details.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"collectionName": "components_product_amazon_site_stripe_details",
|
||||
"info": {
|
||||
"displayName": "Amazon Attributes",
|
||||
"description": ""
|
||||
},
|
||||
"options": {},
|
||||
"attributes": {
|
||||
"asin": {
|
||||
"type": "string"
|
||||
},
|
||||
"siteStripeUrl": {
|
||||
"type": "text"
|
||||
}
|
||||
}
|
||||
}
|
17
src/components/product/merchant-offer.json
Normal file
17
src/components/product/merchant-offer.json
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"collectionName": "components_product_merchant_offers",
|
||||
"info": {
|
||||
"displayName": "Merchant Offer"
|
||||
},
|
||||
"options": {},
|
||||
"attributes": {
|
||||
"merchantName": {
|
||||
"type": "string"
|
||||
},
|
||||
"offerPrice": {
|
||||
"type": "component",
|
||||
"repeatable": true,
|
||||
"component": "product.offer-price"
|
||||
}
|
||||
}
|
||||
}
|
21
src/components/product/offer-price.json
Normal file
21
src/components/product/offer-price.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"collectionName": "components_product_offer_prices",
|
||||
"info": {
|
||||
"displayName": "Offer Price",
|
||||
"description": ""
|
||||
},
|
||||
"options": {},
|
||||
"attributes": {
|
||||
"newPrice": {
|
||||
"type": "decimal",
|
||||
"min": 0
|
||||
},
|
||||
"usedPrice": {
|
||||
"type": "decimal",
|
||||
"min": 0
|
||||
},
|
||||
"quoteDate": {
|
||||
"type": "datetime"
|
||||
}
|
||||
}
|
||||
}
|
21
src/components/product/reviews-data.json
Normal file
21
src/components/product/reviews-data.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"collectionName": "components_product_reviews_data",
|
||||
"info": {
|
||||
"displayName": "Reviews Data"
|
||||
},
|
||||
"options": {},
|
||||
"attributes": {
|
||||
"reviewCount": {
|
||||
"type": "integer",
|
||||
"min": 0
|
||||
},
|
||||
"reviewRating": {
|
||||
"type": "decimal",
|
||||
"max": 5,
|
||||
"min": 0
|
||||
},
|
||||
"updatedDate": {
|
||||
"type": "datetime"
|
||||
}
|
||||
}
|
||||
}
|
37
src/components/shared/meta-social.json
Normal file
37
src/components/shared/meta-social.json
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"collectionName": "components_shared_meta_socials",
|
||||
"info": {
|
||||
"displayName": "metaSocial",
|
||||
"icon": "project-diagram"
|
||||
},
|
||||
"options": {},
|
||||
"attributes": {
|
||||
"socialNetwork": {
|
||||
"type": "enumeration",
|
||||
"enum": [
|
||||
"Facebook",
|
||||
"Twitter"
|
||||
],
|
||||
"required": true
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"maxLength": 60
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 65,
|
||||
"required": true
|
||||
},
|
||||
"image": {
|
||||
"allowedTypes": [
|
||||
"images",
|
||||
"files",
|
||||
"videos"
|
||||
],
|
||||
"type": "media",
|
||||
"multiple": false
|
||||
}
|
||||
}
|
||||
}
|
53
src/components/shared/seo.json
Normal file
53
src/components/shared/seo.json
Normal file
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"collectionName": "components_shared_seos",
|
||||
"info": {
|
||||
"displayName": "seo",
|
||||
"icon": "search"
|
||||
},
|
||||
"options": {},
|
||||
"attributes": {
|
||||
"metaTitle": {
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"maxLength": 60
|
||||
},
|
||||
"metaDescription": {
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"maxLength": 160,
|
||||
"minLength": 50
|
||||
},
|
||||
"metaImage": {
|
||||
"type": "media",
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"allowedTypes": [
|
||||
"images",
|
||||
"files",
|
||||
"videos"
|
||||
]
|
||||
},
|
||||
"metaSocial": {
|
||||
"type": "component",
|
||||
"repeatable": true,
|
||||
"component": "shared.meta-social"
|
||||
},
|
||||
"keywords": {
|
||||
"type": "text",
|
||||
"regex": "[^,]+"
|
||||
},
|
||||
"metaRobots": {
|
||||
"type": "string",
|
||||
"regex": "[^,]+"
|
||||
},
|
||||
"structuredData": {
|
||||
"type": "json"
|
||||
},
|
||||
"metaViewport": {
|
||||
"type": "string"
|
||||
},
|
||||
"canonicalURL": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user