SEO improvements
parent
94f457748e
commit
de0b81d6be
6
app.js
6
app.js
|
@ -314,6 +314,12 @@ handlebars = handlebars.create({
|
|||
return'd-none';
|
||||
}
|
||||
return'';
|
||||
},
|
||||
snip: (text) => {
|
||||
if(text.length > 155){
|
||||
return text.substring(0, 155) + '...';
|
||||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "express-cart",
|
||||
"version": "1.1.15",
|
||||
"version": "1.1.16",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -2967,6 +2967,11 @@
|
|||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"ent": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
|
||||
"integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
|
||||
},
|
||||
"entities": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
|
||||
|
@ -5960,6 +5965,16 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"is-natural-number": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
|
||||
"integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg="
|
||||
},
|
||||
"is-natural-number-string": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-natural-number-string/-/is-natural-number-string-1.0.1.tgz",
|
||||
"integrity": "sha1-0OvxwBH64tOwc02MgBFuJRKkoug="
|
||||
},
|
||||
"is-negated-glob": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
|
||||
|
@ -6523,6 +6538,11 @@
|
|||
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
|
||||
"integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
|
||||
},
|
||||
"lodash.trim": {
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz",
|
||||
"integrity": "sha1-NkJefukL5KpeJ7zruFt9EepHqlc="
|
||||
},
|
||||
"lodash.uniq": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
||||
|
@ -6533,6 +6553,11 @@
|
|||
"resolved": "https://registry.npmjs.org/lodash.unset/-/lodash.unset-4.5.2.tgz",
|
||||
"integrity": "sha1-Nw0dPoW3Kn4bDN8tJyEhMG8j5O0="
|
||||
},
|
||||
"lodash.without": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz",
|
||||
"integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw="
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
||||
|
@ -8102,6 +8127,45 @@
|
|||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
|
||||
},
|
||||
"ranges-apply": {
|
||||
"version": "3.0.48",
|
||||
"resolved": "https://registry.npmjs.org/ranges-apply/-/ranges-apply-3.0.48.tgz",
|
||||
"integrity": "sha512-BnNKJGVJ70290B/h9dekLqZAqpA5zziUao5J93Zm0o/+x55ZoN+Sx2DIIGgnvNQ5e8W2kN7CvM6k5mBMxLWnxQ==",
|
||||
"requires": {
|
||||
"is-natural-number-string": "^1.0.1",
|
||||
"ranges-merge": "^4.2.31"
|
||||
}
|
||||
},
|
||||
"ranges-merge": {
|
||||
"version": "4.2.31",
|
||||
"resolved": "https://registry.npmjs.org/ranges-merge/-/ranges-merge-4.2.31.tgz",
|
||||
"integrity": "sha512-YCoKrdj5juCPNoFipewrf/agmEXulgEkzcLhsUhlcZXZ5uMsVOdbRJNVdkPlZvvkqiKkzCNjrUYk2Yl3DHVmew==",
|
||||
"requires": {
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.isplainobject": "^4.0.6",
|
||||
"ranges-sort": "^3.10.46"
|
||||
}
|
||||
},
|
||||
"ranges-push": {
|
||||
"version": "3.6.15",
|
||||
"resolved": "https://registry.npmjs.org/ranges-push/-/ranges-push-3.6.15.tgz",
|
||||
"integrity": "sha512-i1uEcKCgyUs8JMNn363bREAChUoDeUZgg6eMjvKa8ay7G7Veh7qhEUb8taetcQ3V93FE4ubLk/MHcSuTvPtzTg==",
|
||||
"requires": {
|
||||
"is-natural-number-string": "^1.0.1",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"ranges-merge": "^4.2.31",
|
||||
"string-collapse-leading-whitespace": "^2.0.12",
|
||||
"string-trim-spaces-only": "^2.8.9"
|
||||
}
|
||||
},
|
||||
"ranges-sort": {
|
||||
"version": "3.10.46",
|
||||
"resolved": "https://registry.npmjs.org/ranges-sort/-/ranges-sort-3.10.46.tgz",
|
||||
"integrity": "sha512-H07aLdjKQRz3tUNHCj5P9Tof1vH35J4c3atXl8T/fs3SATKgzpkjACz9MfuuKgvQsXOFau2GDvQ/hl6Szw39/Q==",
|
||||
"requires": {
|
||||
"is-natural-number": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
|
||||
|
@ -9185,6 +9249,39 @@
|
|||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
|
||||
"integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
|
||||
},
|
||||
"string-collapse-leading-whitespace": {
|
||||
"version": "2.0.12",
|
||||
"resolved": "https://registry.npmjs.org/string-collapse-leading-whitespace/-/string-collapse-leading-whitespace-2.0.12.tgz",
|
||||
"integrity": "sha512-LQoIozpzquQCxt3ARdnuPAp0IFcQFfMgVKDVMYpvmrfyUSA17pLuSOD8h3HfYJNn0uTnw0eb5xsiIPTyzlzxCw=="
|
||||
},
|
||||
"string-left-right": {
|
||||
"version": "2.3.14",
|
||||
"resolved": "https://registry.npmjs.org/string-left-right/-/string-left-right-2.3.14.tgz",
|
||||
"integrity": "sha512-Z6/TNpG+aDijZyO0K32dPOI0d8R2uzXWhiibGMj+AZIqOBUY0BJnZ96OSNYQohSuABfZRu03POo/3rEhrxfLZw==",
|
||||
"requires": {
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.isplainobject": "^4.0.6"
|
||||
}
|
||||
},
|
||||
"string-strip-html": {
|
||||
"version": "4.3.14",
|
||||
"resolved": "https://registry.npmjs.org/string-strip-html/-/string-strip-html-4.3.14.tgz",
|
||||
"integrity": "sha512-CpX4dR8388T5HwYMKqS17K3MGls0yuec7m5hK6hbWGvxpJPVXJIfMd+ZTCHLgHVoWZew6sjBqI6bpERol/tGxw==",
|
||||
"requires": {
|
||||
"ent": "^2.2.0",
|
||||
"lodash.isplainobject": "^4.0.6",
|
||||
"lodash.trim": "^4.5.1",
|
||||
"lodash.without": "^4.4.0",
|
||||
"ranges-apply": "^3.0.48",
|
||||
"ranges-push": "^3.6.15",
|
||||
"string-left-right": "^2.3.14"
|
||||
}
|
||||
},
|
||||
"string-trim-spaces-only": {
|
||||
"version": "2.8.9",
|
||||
"resolved": "https://registry.npmjs.org/string-trim-spaces-only/-/string-trim-spaces-only-2.8.9.tgz",
|
||||
"integrity": "sha512-atfGwUCChsXQ0WEqX1Ju2YYC/6yqpnq8fL8jl2BUpjNR13b+s6q/SmmdDG10H+t4JB8/cRi9klyYuwctvgjFJg=="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
"rimraf": "^2.7.1",
|
||||
"sanitize-html": "^1.20.1",
|
||||
"sitemap": "^1.6.0",
|
||||
"string-strip-html": "^4.3.14",
|
||||
"strip-bom": "^3.0.0",
|
||||
"stripe": "^7.12.0",
|
||||
"uglifycss": "0.0.27",
|
||||
|
|
|
@ -2,6 +2,7 @@ const express = require('express');
|
|||
const router = express.Router();
|
||||
const colors = require('colors');
|
||||
const hash = require('object-hash');
|
||||
const stripHtml = require('string-strip-html');
|
||||
const moment = require('moment');
|
||||
const _ = require('lodash');
|
||||
const {
|
||||
|
@ -320,7 +321,7 @@ router.get('/product/:id', async (req, res) => {
|
|||
result: product,
|
||||
productOptions: productOptions,
|
||||
images: images,
|
||||
productDescription: product.productDescription,
|
||||
productDescription: stripHtml(product.productDescription),
|
||||
metaDescription: config.cartTitle + ' - ' + product.productTitle,
|
||||
config: config,
|
||||
session: req.session,
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
{{/if}}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
{{#if metaDescription}}
|
||||
<meta name="description" content="{{metaDescription}}">
|
||||
<meta name="description" content="{{snip metaDescription}}">
|
||||
{{else}}
|
||||
<meta name="description" content="{{config.cartDescription}}">
|
||||
<meta name="description" content="{{snip config.cartDescription}}">
|
||||
{{/if}}
|
||||
<meta name="keywords" content="{{config.cartTitle}}">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha256-L/W5Wfqfa0sdBNIKN9cG6QA5F2qx4qICmU2VgLruv9Y=" crossorigin="anonymous" />
|
||||
|
@ -55,15 +55,31 @@
|
|||
{{/if}}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-tokenfield/0.12.0/bootstrap-tokenfield.min.js" integrity="sha256-jdwX0QzXB7z7Xc7Vz0ovtIHWO5qIZWg0aLcGv44JDgE=" crossorigin="anonymous"></script>
|
||||
<!-- SEO data -->
|
||||
{{#if pageUrl}}
|
||||
<link rel="canonical" href="{{pageUrl}}" />
|
||||
{{else}}
|
||||
<link rel="canonical" href="{{config.baseUrl}}" />
|
||||
{{/if}}
|
||||
<meta name="referrer" content="origin" />
|
||||
<meta property="og:site_name" content="{{config.cartTitle}}" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="{{title}}" />
|
||||
{{#if pageUrl}}
|
||||
<meta property="og:url" content="{{pageUrl}}" />
|
||||
{{else}}
|
||||
<meta property="og:url" content="{{config.baseUrl}}" />
|
||||
{{/if}}
|
||||
{{#if result.productImage}}
|
||||
<meta property="og:image" content="{{result.productImage}}" />
|
||||
{{/if}}
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="{{title}}" />
|
||||
<meta name="twitter:url" content="{{config.baseUrl}}" />
|
||||
{{#if pageUrl}}
|
||||
<meta name="twitter:url" content="{{pageUrl}}" />
|
||||
{{else}}
|
||||
<meta name="twitter:url" content="{{config.baseUrl}}" />
|
||||
{{/if}}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
|
|
Loading…
Reference in New Issue