Add minified JavaScript and CSS files, implement datepicker and carousel functionality
- Added minified versions of JavaScript files including main, script, google-map, bootstrap-datepicker, and jquery.easing. - Implemented a datepicker for appointment dates and a timepicker for appointment times. - Introduced a carousel feature for image display with automatic sliding and responsive behavior. - Updated package.json to include scripts for minifying CSS and JS files, along with necessary dependencies.
This commit is contained in:
parent
2a04a8f245
commit
ebc25857dc
112
.gitignore
vendored
Normal file
112
.gitignore
vendored
Normal file
@ -0,0 +1,112 @@
|
||||
# Node.js dependencies
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json
|
||||
|
||||
# PHP
|
||||
*.log
|
||||
*.tmp
|
||||
*.temp
|
||||
*.cache
|
||||
/vendor/
|
||||
composer.phar
|
||||
composer.lock
|
||||
|
||||
# IDE and Editor files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.sublime-project
|
||||
.sublime-workspace
|
||||
|
||||
# Operating System files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# Backup files
|
||||
*.bak
|
||||
*.backup
|
||||
*.old
|
||||
*~
|
||||
|
||||
# Configuration files (sensitive)
|
||||
config.php
|
||||
.env
|
||||
.env.local
|
||||
.env.production
|
||||
database.config.php
|
||||
|
||||
# Upload directories
|
||||
uploads/
|
||||
images/uploads/
|
||||
files/
|
||||
|
||||
# Cache directories
|
||||
cache/
|
||||
tmp/
|
||||
temp/
|
||||
|
||||
# Session files
|
||||
sessions/
|
||||
|
||||
# Error logs
|
||||
error_log
|
||||
error.log
|
||||
php_errors.log
|
||||
|
||||
# Build artifacts
|
||||
dist/
|
||||
build/
|
||||
|
||||
# Development tools
|
||||
.sass-cache/
|
||||
*.css.map
|
||||
*.js.map
|
||||
|
||||
# Prepros (CSS/JS preprocessor)
|
||||
prepros-6.config
|
||||
.prepros-cache/
|
||||
|
||||
# Local development
|
||||
local/
|
||||
dev/
|
||||
development/
|
||||
|
||||
# Database dumps
|
||||
*.sql
|
||||
*.sqlite
|
||||
*.db
|
||||
|
||||
# Minified files (if you want to exclude them)
|
||||
# Uncomment these lines if you prefer to generate minified files during build
|
||||
# *.min.css
|
||||
# *.min.js
|
||||
|
||||
# WordPress specific (if applicable)
|
||||
wp-config.php
|
||||
wp-content/uploads/
|
||||
wp-content/cache/
|
||||
|
||||
# Security
|
||||
.htaccess.backup
|
||||
robots.txt.backup
|
||||
|
||||
# Archives
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
*.7z
|
||||
|
||||
# Documentation temp files
|
||||
*.pdf~
|
||||
*.docx~
|
||||
@ -7,51 +7,61 @@
|
||||
All pages have been updated with improved, targeted meta descriptions and keywords that include "roofer in Accrington":
|
||||
|
||||
#### **Home Page (index.php)**
|
||||
|
||||
- **Title**: "Professional Roofing Services | Roofer in Accrington"
|
||||
- **Description**: Leading roofer in Accrington, Lancashire with comprehensive service area coverage
|
||||
- **Keywords**: Focused on local SEO with "roofer in accrington", service-specific terms
|
||||
|
||||
#### **About Page (about.php)**
|
||||
|
||||
- **Title**: "About Warmseal Roofing | Trusted Roofer in Accrington"
|
||||
- **Description**: Emphasizes trust, experience, and local presence
|
||||
- **Keywords**: Trust signals and local establishment keywords
|
||||
|
||||
#### **Services Page (services.php)**
|
||||
|
||||
- **Title**: "Roofing Services | Expert Roofer in Accrington"
|
||||
- **Description**: Comprehensive service overview with location targeting
|
||||
- **Keywords**: Service-specific with local geo-targeting
|
||||
|
||||
#### **Roof Repairs (roof-repairs.php)**
|
||||
|
||||
- **Title**: "Expert Roof Repairs | Emergency Roofer in Accrington"
|
||||
- **Description**: Emergency services focus with urgency keywords
|
||||
- **Keywords**: Emergency-focused with local targeting
|
||||
|
||||
#### **Roofing Solutions (roofing-solutions.php)**
|
||||
|
||||
- **Title**: "New Roof Installation | Roofing Solutions Accrington"
|
||||
- **Description**: New installation focus with material variety
|
||||
- **Keywords**: Installation-focused with material types
|
||||
|
||||
#### **Roofline Services (roofline-services.php)**
|
||||
|
||||
- **Title**: "UPVC Roofline Services | Guttering & Fascias Accrington"
|
||||
- **Description**: Specific to UPVC and roofline components
|
||||
- **Keywords**: UPVC-focused with component-specific terms
|
||||
|
||||
#### **Cleaning Services (cleaning.php)**
|
||||
|
||||
- **Title**: "Roof Cleaning & Moss Removal | Gutter Cleaning Accrington"
|
||||
- **Description**: Maintenance and cleaning service focus
|
||||
- **Keywords**: Cleaning and maintenance specific
|
||||
|
||||
#### **Projects (projects.php)**
|
||||
|
||||
- **Title**: "Recent Roofing Projects | Completed Work Accrington"
|
||||
- **Description**: Portfolio and quality workmanship focus
|
||||
- **Keywords**: Project and portfolio focused
|
||||
|
||||
#### **Contact (contact.php)**
|
||||
|
||||
- **Title**: "Contact Us | Get a Free Quote | Roofer in Accrington"
|
||||
- **Description**: Quote generation and contact focus
|
||||
- **Keywords**: Contact and quote focused
|
||||
|
||||
#### **Blog (blog.php)**
|
||||
|
||||
- **Title**: "Roofing Blog | Tips & Advice | Roofer in Accrington"
|
||||
- **Description**: Authority and expertise positioning
|
||||
- **Keywords**: Educational and advice focused
|
||||
@ -59,6 +69,7 @@ All pages have been updated with improved, targeted meta descriptions and keywor
|
||||
### 2. **Global Meta Configuration Updates**
|
||||
|
||||
Updated `meta/config.php`:
|
||||
|
||||
- Default descriptions now include "roofer in Accrington"
|
||||
- Improved geographic targeting with Lancashire, Blackburn, Preston
|
||||
- Enhanced service-specific keyword targeting
|
||||
@ -66,6 +77,7 @@ Updated `meta/config.php`:
|
||||
### 3. **Advanced Schema.org Structured Data**
|
||||
|
||||
#### **Base Business Schema** (in `meta/meta.php`)
|
||||
|
||||
- `RoofingContractor` schema type
|
||||
- Complete business information including:
|
||||
- Service areas (Accrington, Blackburn, Preston, Lancashire)
|
||||
@ -76,6 +88,7 @@ Updated `meta/config.php`:
|
||||
- Customer reviews and ratings
|
||||
|
||||
#### **Page-Specific Schema** (new `meta/schema.php`)
|
||||
|
||||
- Dynamic schema generation based on current page
|
||||
- Service-specific schema for each service page
|
||||
- ContactPage schema for contact
|
||||
@ -84,6 +97,7 @@ Updated `meta/config.php`:
|
||||
- Breadcrumb navigation schema
|
||||
|
||||
#### **Enhanced Local Business Schema** (new `meta/local-business-schema.php`)
|
||||
|
||||
- Comprehensive local business markup with:
|
||||
- Extended service area coverage
|
||||
- Detailed service catalog with offers
|
||||
@ -95,12 +109,14 @@ Updated `meta/config.php`:
|
||||
### 4. **Technical SEO Improvements**
|
||||
|
||||
#### **Updated Sitemap** (sitemap-updated.xml)
|
||||
|
||||
- Added changefreq attributes for better crawling
|
||||
- Prioritized pages based on importance
|
||||
- Updated timestamps
|
||||
- Added blog page
|
||||
|
||||
#### **Robots.txt** (new file)
|
||||
|
||||
- Optimized crawler access
|
||||
- Protected sensitive directories
|
||||
- Allowed important assets (CSS, JS, images)
|
||||
@ -110,11 +126,13 @@ Updated `meta/config.php`:
|
||||
### 5. **Local SEO Focus**
|
||||
|
||||
**Geographic Targeting:**
|
||||
|
||||
- Primary: Accrington (main location)
|
||||
- Secondary: Blackburn, Preston, Burnley, Clitheroe
|
||||
- Regional: Lancashire
|
||||
|
||||
**Service Area Coverage:**
|
||||
|
||||
- Emergency services across Lancashire
|
||||
- Local business schema with precise geo-coordinates
|
||||
- Area-specific service descriptions
|
||||
@ -128,6 +146,7 @@ Updated `meta/config.php`:
|
||||
## Implementation Notes
|
||||
|
||||
### **Files Modified:**
|
||||
|
||||
1. `index.php` - Enhanced homepage SEO
|
||||
2. `about.php` - About page optimization
|
||||
3. `services.php` - Services page SEO
|
||||
@ -142,6 +161,7 @@ Updated `meta/config.php`:
|
||||
12. `meta/meta.php` - Schema integration
|
||||
|
||||
### **Files Created:**
|
||||
|
||||
1. `meta/schema.php` - Page-specific schema system
|
||||
2. `meta/local-business-schema.php` - Enhanced business schema
|
||||
3. `robots.txt` - Search engine directives
|
||||
@ -150,18 +170,21 @@ Updated `meta/config.php`:
|
||||
## SEO Benefits Achieved
|
||||
|
||||
### **Improved Local Ranking Factors:**
|
||||
|
||||
- ✅ "Roofer in Accrington" targeting on all pages
|
||||
- ✅ Local schema markup with geo-coordinates
|
||||
- ✅ Extended service area coverage
|
||||
- ✅ Local business information consistency
|
||||
|
||||
### **Enhanced Technical SEO:**
|
||||
|
||||
- ✅ Comprehensive structured data
|
||||
- ✅ Page-specific meta optimization
|
||||
- ✅ Improved site architecture
|
||||
- ✅ Better crawlability
|
||||
|
||||
### **Content Optimization:**
|
||||
|
||||
- ✅ Service-specific landing pages
|
||||
- ✅ Emergency services emphasis
|
||||
- ✅ Local expertise positioning
|
||||
|
||||
2
blog.php
2
blog.php
@ -128,7 +128,7 @@ include_once $URlsorrection . "includes/nav.php";
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
6
css/animate.min.css
vendored
Normal file
6
css/animate.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
9
css/bootstrap-datepicker.min.css
vendored
Normal file
9
css/bootstrap-datepicker.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
css/flaticon.min.css
vendored
Normal file
1
css/flaticon.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
@font-face{font-family:Flaticon;src:url("../fonts/flaticon/font/Flaticon.eot");src:url("../fonts/flaticon/font/Flaticon.eot?#iefix") format("embedded-opentype"),url("../fonts/flaticon/font/Flaticon.woff") format("woff"),url("../fonts/flaticon/font/Flaticon.ttf") format("truetype"),url("../fonts/flaticon/font/Flaticon.svg#Flaticon") format("svg");font-weight:400;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:Flaticon;src:url("../fonts/flaticon/font/Flaticon.svg#Flaticon") format("svg")}}[class*=" flaticon-"]:after,[class*=" flaticon-"]:before,[class^=flaticon-]:after,[class^=flaticon-]:before{font-family:Flaticon;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.flaticon-roof-5:before{content:"\f100"}.flaticon-roof-1:before{content:"\f101"}.flaticon-roof-2:before{content:"\f102"}.flaticon-roof-3:before{content:"\f103"}.flaticon-roof-4:before{content:"\f104"}.flaticon-roof:before{content:"\f105"}
|
||||
1
css/jquery.timepicker.min.css
vendored
Normal file
1
css/jquery.timepicker.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.ui-timepicker-wrapper{overflow-y:auto;max-height:150px;width:6.5em;background:#fff;border:1px solid #ddd;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);outline:0;z-index:10001;margin:0}.ui-timepicker-wrapper.ui-timepicker-with-duration{width:13em}.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60{width:11em}.ui-timepicker-list{margin:0;padding:0;list-style:none}.ui-timepicker-duration{margin-left:5px;color:#888}.ui-timepicker-list:hover .ui-timepicker-duration{color:#888}.ui-timepicker-list li{padding:3px 0 3px 5px;cursor:pointer;white-space:nowrap;color:#000;list-style:none;margin:0}.ui-timepicker-list:hover .ui-timepicker-selected{background:#fff;color:#000}.ui-timepicker-list .ui-timepicker-selected:hover,.ui-timepicker-list li:hover,li.ui-timepicker-selected{background:#1980ec;color:#fff}.ui-timepicker-list li:hover .ui-timepicker-duration,li.ui-timepicker-selected .ui-timepicker-duration{color:#ccc}.ui-timepicker-list li.ui-timepicker-disabled,.ui-timepicker-list li.ui-timepicker-disabled:hover,.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{color:#888;cursor:default}.ui-timepicker-list li.ui-timepicker-disabled:hover,.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{background:#f2f2f2}
|
||||
1
css/magnific-popup.min.css
vendored
Normal file
1
css/magnific-popup.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-ajax-holder .mfp-content,.mfp-inline-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-arrow,.mfp-close,.mfp-counter,.mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-arrow,button.mfp-close{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:focus,.mfp-close:hover{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-iframe-holder .mfp-close,.mfp-image-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px;white-space:nowrap}.mfp-arrow{position:absolute;opacity:.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow:after,.mfp-arrow:before{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}
|
||||
1
css/padding.min.css
vendored
Normal file
1
css/padding.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.padding-top-10{padding-top:10px}.padding-top-20{padding-top:20px}.padding-top-30{padding-top:30px}.padding-top-40{padding-top:40px}.padding-top-50{padding-top:50px}.padding-top-60{padding-top:60px}.padding-top-70{padding-top:70px}.padding-top-80{padding-top:80px}.padding-top-90{padding-top:90px}.padding-top-100{padding-top:100px}.padding-top-110{padding-top:110px}.padding-top-120{padding-top:120px}.padding-top-130{padding-top:130px}.padding-top-140{padding-top:140px}.padding-top-150{padding-top:150px}.padding-top-160{padding-top:160px}.padding-top-170{padding-top:170px}.padding-top-180{padding-top:180px}.padding-top-190{padding-top:190px}.padding-top-200{padding-top:200px}.padding-right-10{padding-right:10px}.padding-right-20{padding-right:20px}.padding-right-30{padding-right:30px}.padding-right-40{padding-right:40px}.padding-right-50{padding-right:50px}.padding-right-60{padding-right:60px}.padding-right-70{padding-right:70px}.padding-right-80{padding-right:80px}.padding-right-90{padding-right:90px}.padding-right-100{padding-right:100px}.padding-right-110{padding-right:110px}.padding-right-120{padding-right:120px}.padding-right-130{padding-right:130px}.padding-right-140{padding-right:140px}.padding-right-150{padding-right:150px}.padding-right-160{padding-right:160px}.padding-right-170{padding-right:170px}.padding-right-180{padding-right:180px}.padding-right-190{padding-right:190px}.padding-right-200{padding-right:200px}.padding-bottom-10{padding-bottom:10px}.padding-bottom-20{padding-bottom:20px}.padding-bottom-30{padding-bottom:30px}.padding-bottom-40{padding-bottom:40px}.padding-bottom-50{padding-bottom:50px}.padding-bottom-60{padding-bottom:60px}.padding-bottom-70{padding-bottom:70px}.padding-bottom-80{padding-bottom:80px}.padding-bottom-90{padding-bottom:90px}.padding-bottom-100{padding-bottom:100px}.padding-bottom-110{padding-bottom:110px}.padding-bottom-120{padding-bottom:120px}.padding-bottom-130{padding-bottom:130px}.padding-bottom-140{padding-bottom:140px}.padding-bottom-150{padding-bottom:150px}.padding-bottom-160{padding-bottom:160px}.padding-bottom-170{padding-bottom:170px}.padding-bottom-180{padding-bottom:180px}.padding-bottom-190{padding-bottom:190px}.padding-bottom-200{padding-bottom:200px}.padding-left-10{padding-left:10px}.padding-left-20{padding-left:20px}.padding-left-30{padding-left:30px}.padding-left-40{padding-left:40px}.padding-left-50{padding-left:50px}.padding-left-60{padding-left:60px}.padding-left-70{padding-left:70px}.padding-left-80{padding-left:80px}.padding-left-90{padding-left:90px}.padding-left-100{padding-left:100px}.padding-left-110{padding-left:110px}.padding-left-120{padding-left:120px}.padding-left-130{padding-left:130px}.padding-left-140{padding-left:140px}.padding-left-150{padding-left:150px}.padding-left-160{padding-left:160px}.padding-left-170{padding-left:170px}.padding-left-180{padding-left:180px}.padding-left-190{padding-left:190px}.padding-left-200{padding-left:200px}.padding-10{padding:10px}.padding-20{padding:20px}.padding-30{padding:30px}.padding-40{padding:40px}.padding-50{padding:50px}.padding-60{padding:60px}.padding-70{padding:70px}.padding-80{padding:80px}.padding-90{padding:90px}.padding-100{padding:100px}.padding-110{padding:110px}.padding-120{padding:120px}.padding-130{padding:130px}.padding-140{padding:140px}.padding-150{padding:150px}.padding-160{padding:160px}.padding-170{padding:170px}.padding-180{padding:180px}.padding-190{padding:190px}.padding-200{padding:200px}
|
||||
6
css/style.min.css
vendored
Normal file
6
css/style.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -60,18 +60,18 @@
|
||||
<script src="<?= $URLcorrection ?>js/jquery-migrate-3.0.1.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/popper.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/bootstrap.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.easing.1.3.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.easing.1.3.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.waypoints.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.stellar.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.animateNumber.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/bootstrap-datepicker.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/bootstrap-datepicker.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.timepicker.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/owl.carousel.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/jquery.magnific-popup.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/scrollax.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/main.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/main.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/script.js"></script>
|
||||
<script src="<?= $URLcorrection ?>js/script.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@ -10,15 +10,15 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/animate.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/animate.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/owl.carousel.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/owl.theme.default.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/magnific-popup.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/bootstrap-datepicker.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/jquery.timepicker.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/flaticon.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/style.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/padding.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/magnific-popup.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/bootstrap-datepicker.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/jquery.timepicker.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/flaticon.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/style.min.css">
|
||||
<link rel="stylesheet" href="<?= $URLcorrection ?>css/padding.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="<?= $URLcorrection ?>fontawesome/css/all.min.css">
|
||||
</head>
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<img src="<?= $URLcorection ?>images/logo/Warmseal-White-Transparent.webp" class="logo" alt="Warmseal Logo">
|
||||
</a>
|
||||
<div class="text w-100">
|
||||
<h1 class="mb-4 hero-text">Quality roofing at a affordable price</h1>
|
||||
<h2 class="mb-4 hero-text">Quality roofing at an affordable price</h2>
|
||||
<p><a href="<?= $URLcorection ?>contact" class="btn btn-primary">Book a Free Quote</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
1
js/bootstrap-datepicker.min.js
vendored
Normal file
1
js/bootstrap-datepicker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
js/google-map.min.js
vendored
Normal file
1
js/google-map.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
var google;function init(){for(var e={zoom:7,center:new google.maps.LatLng(40.69847032728747,-73.9514422416687),scrollwheel:!1,styles:[{featureType:"administrative.country",elementType:"geometry",stylers:[{visibility:"simplified"},{hue:"#ff0000"}]}]},o=document.getElementById("map"),n=new google.maps.Map(o,e),t=["New York"],a=0;a<t.length;a++)$.getJSON("http://maps.googleapis.com/maps/api/geocode/json?address="+t[a]+"&sensor=false",null,function(e){e=e.results[0].geometry.location,e=new google.maps.LatLng(e.lat,e.lng);new google.maps.Marker({position:e,map:n,icon:"images/loc.png"})})}google.maps.event.addDomListener(window,"load",init);
|
||||
1
js/jquery.easing.1.3.min.js
vendored
Normal file
1
js/jquery.easing.1.3.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(n,t,e,u,a){return jQuery.easing[jQuery.easing.def](n,t,e,u,a)},easeInQuad:function(n,t,e,u,a){return u*(t/=a)*t+e},easeOutQuad:function(n,t,e,u,a){return-u*(t/=a)*(t-2)+e},easeInOutQuad:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t+e:-u/2*(--t*(t-2)-1)+e},easeInCubic:function(n,t,e,u,a){return u*(t/=a)*t*t+e},easeOutCubic:function(n,t,e,u,a){return u*((t=t/a-1)*t*t+1)+e},easeInOutCubic:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t*t+e:u/2*((t-=2)*t*t+2)+e},easeInQuart:function(n,t,e,u,a){return u*(t/=a)*t*t*t+e},easeOutQuart:function(n,t,e,u,a){return-u*((t=t/a-1)*t*t*t-1)+e},easeInOutQuart:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t*t*t+e:-u/2*((t-=2)*t*t*t-2)+e},easeInQuint:function(n,t,e,u,a){return u*(t/=a)*t*t*t*t+e},easeOutQuint:function(n,t,e,u,a){return u*((t=t/a-1)*t*t*t*t+1)+e},easeInOutQuint:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t*t*t*t+e:u/2*((t-=2)*t*t*t*t+2)+e},easeInSine:function(n,t,e,u,a){return-u*Math.cos(t/a*(Math.PI/2))+u+e},easeOutSine:function(n,t,e,u,a){return u*Math.sin(t/a*(Math.PI/2))+e},easeInOutSine:function(n,t,e,u,a){return-u/2*(Math.cos(Math.PI*t/a)-1)+e},easeInExpo:function(n,t,e,u,a){return 0==t?e:u*Math.pow(2,10*(t/a-1))+e},easeOutExpo:function(n,t,e,u,a){return t==a?e+u:u*(1-Math.pow(2,-10*t/a))+e},easeInOutExpo:function(n,t,e,u,a){return 0==t?e:t==a?e+u:(t/=a/2)<1?u/2*Math.pow(2,10*(t-1))+e:u/2*(2-Math.pow(2,-10*--t))+e},easeInCirc:function(n,t,e,u,a){return-u*(Math.sqrt(1-(t/=a)*t)-1)+e},easeOutCirc:function(n,t,e,u,a){return u*Math.sqrt(1-(t=t/a-1)*t)+e},easeInOutCirc:function(n,t,e,u,a){return(t/=a/2)<1?-u/2*(Math.sqrt(1-t*t)-1)+e:u/2*(Math.sqrt(1-(t-=2)*t)+1)+e},easeInElastic:function(n,t,e,u,a){var r=1.70158,i=0,s=u;return 0==t?e:1==(t/=a)?e+u:(i=i||.3*a,r=s<Math.abs(u)?(s=u,i/4):i/(2*Math.PI)*Math.asin(u/s),-(s*Math.pow(2,10*--t)*Math.sin(2*Math.PI*(t*a-r)/i))+e)},easeOutElastic:function(n,t,e,u,a){var r=1.70158,i=0,s=u;return 0==t?e:1==(t/=a)?e+u:(i=i||.3*a,r=s<Math.abs(u)?(s=u,i/4):i/(2*Math.PI)*Math.asin(u/s),s*Math.pow(2,-10*t)*Math.sin(2*Math.PI*(t*a-r)/i)+u+e)},easeInOutElastic:function(n,t,e,u,a){var r=1.70158,i=0,s=u;return 0==t?e:2==(t/=a/2)?e+u:(i=i||a*(.3*1.5),r=s<Math.abs(u)?(s=u,i/4):i/(2*Math.PI)*Math.asin(u/s),t<1?s*Math.pow(2,10*--t)*Math.sin(2*Math.PI*(t*a-r)/i)*-.5+e:s*Math.pow(2,-10*--t)*Math.sin(2*Math.PI*(t*a-r)/i)*.5+u+e)},easeInBack:function(n,t,e,u,a,r){return u*(t/=a)*t*(((r=null==r?1.70158:r)+1)*t-r)+e},easeOutBack:function(n,t,e,u,a,r){return u*((t=t/a-1)*t*(((r=null==r?1.70158:r)+1)*t+r)+1)+e},easeInOutBack:function(n,t,e,u,a,r){return null==r&&(r=1.70158),(t/=a/2)<1?u/2*(t*t*((1+(r*=1.525))*t-r))+e:u/2*((t-=2)*t*((1+(r*=1.525))*t+r)+2)+e},easeInBounce:function(n,t,e,u,a){return u-jQuery.easing.easeOutBounce(n,a-t,0,u,a)+e},easeOutBounce:function(n,t,e,u,a){return(t/=a)<1/2.75?u*(7.5625*t*t)+e:t<2/2.75?u*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?u*(7.5625*(t-=2.25/2.75)*t+.9375)+e:u*(7.5625*(t-=2.625/2.75)*t+.984375)+e},easeInOutBounce:function(n,t,e,u,a){return t<a/2?.5*jQuery.easing.easeInBounce(n,2*t,0,u,a)+e:.5*jQuery.easing.easeOutBounce(n,2*t-a,0,u,a)+.5*u+e}});
|
||||
1
js/main.min.js
vendored
Normal file
1
js/main.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
(n=>{n(window).stellar({responsive:!0,parallaxBackgrounds:!0,parallaxElements:!0,horizontalScrolling:!1,hideDistantElements:!1,scrollProperty:"scroll"}),n(".js-fullheight").css("height",n(window).height()),n(window).resize(function(){n(".js-fullheight").css("height",n(window).height())}),setTimeout(function(){0<n("#ftco-loader").length&&n("#ftco-loader").removeClass("show")},1),n(".home-slider").owlCarousel({loop:!0,autoplay:!0,margin:0,animateOut:"fadeOut",animateIn:"fadeIn",nav:!0,dots:!0,autoplayHoverPause:!1,items:1,navText:["<span class='ion-ios-arrow-back'></span>","<span class='ion-ios-arrow-forward'></span>"],responsive:{0:{items:1},600:{items:1},1e3:{items:1}}}),n(".carousel-testimony").owlCarousel({center:!0,loop:!0,items:1,margin:30,stagePadding:0,nav:!1,navText:['<span class="ion-ios-arrow-back">','<span class="ion-ios-arrow-forward">'],responsive:{0:{items:1},600:{items:2},1e3:{items:3}}}),n("nav .dropdown").hover(function(){var e=n(this);e.addClass("show"),e.find("> a").attr("aria-expanded",!0),e.find(".dropdown-menu").addClass("show")},function(){var e=n(this);e.removeClass("show"),e.find("> a").attr("aria-expanded",!1),e.find(".dropdown-menu").removeClass("show")}),n("#dropdown04").on("show.bs.dropdown",function(){console.log("show")}),n(".image-popup").magnificPopup({type:"image",closeOnContentClick:!0,closeBtnInside:!1,fixedContentPos:!0,mainClass:"mfp-no-margins mfp-with-zoom",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{verticalFit:!0},zoom:{enabled:!0,duration:300}}),n(".popup-youtube, .popup-vimeo, .popup-gmaps").magnificPopup({disableOn:700,type:"iframe",mainClass:"mfp-fade",removalDelay:160,preloader:!1,fixedContentPos:!1}),n("#section-counter").waypoint(function(e){var o;"down"!==e||n(this.element).hasClass("ftco-animated")||(o=n.animateNumber.numberStepFactories.separator(","),n(".number").each(function(){var e=n(this),a=e.data("number");console.log(a),e.animateNumber({number:a,numberStep:o},7e3)}))},{offset:"95%"}),n(".ftco-animate").waypoint(function(e){"down"!==e||n(this.element).hasClass("ftco-animated")||(n(this.element).addClass("item-animate"),setTimeout(function(){n("body .ftco-animate.item-animate").each(function(e){var a=n(this);setTimeout(function(){var e=a.data("animate-effect");"fadeIn"===e?a.addClass("fadeIn ftco-animated"):"fadeInLeft"===e?a.addClass("fadeInLeft ftco-animated"):"fadeInRight"===e?a.addClass("fadeInRight ftco-animated"):a.addClass("fadeInUp ftco-animated"),a.removeClass("item-animate")},50*e,"easeInOutExpo")})},100))},{offset:"95%"}),n(".appointment_date").datepicker({format:"m/d/yyyy",autoclose:!0}),n(".appointment_time").timepicker()})(jQuery);
|
||||
1
js/script.min.js
vendored
Normal file
1
js/script.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
let carouselContainer=document.querySelector(".carousel-container"),imageRow=document.querySelector(".image-row"),imageItems=imageRow.querySelectorAll(".col-md-3"),numberOfVisible=4,scrollPosition=0,imageWidth,slideDuration=1e3,slideInterval=5e3,isAnimating=!1;function updateCarousel(){0<imageItems.length&&(imageWidth=imageItems[0].offsetWidth)}function slideCarousel(){!isAnimating&&imageWidth&&(isAnimating=!0,scrollPosition+=imageWidth,imageRow.style.transform=`translateX(-${scrollPosition}px)`,setTimeout(()=>{var e=imageRow.firstElementChild;imageRow.appendChild(e),imageRow.style.transition="none",imageRow.style.transform="translateX(0px)",scrollPosition=0,imageRow.offsetHeight,imageRow.style.transition="",imageItems=imageRow.querySelectorAll(".col-md-3"),isAnimating=!1},slideDuration))}function startSlidingCarousel(){setInterval(slideCarousel,slideInterval)}function initializeCarousel(){updateCarousel(),startSlidingCarousel(),window.addEventListener("resize",updateCarousel)}initializeCarousel();
|
||||
@ -47,5 +47,3 @@ $metatwitterimage = "$URLcorrection/media/favicons/android-chrome-512x512.png";
|
||||
// $ometa['twittertitle'] = "Acorn Media - $PageTitle";
|
||||
// $ometa['twitterdescription'] = "Acorn Media: Your hub for business web hosting, website design, and digital media services, including advertising and social media management.";
|
||||
// $ometa['twitterimage'] = "$URLcorrection/media/favicons/android-chrome-512x512.png";
|
||||
|
||||
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
<?php
|
||||
// Advanced Local Business Schema for Warmseal Roofing
|
||||
function getLocalBusinessSchema() {
|
||||
function getLocalBusinessSchema()
|
||||
{
|
||||
return [
|
||||
"@context" => "https://schema.org",
|
||||
"@type" => "RoofingContractor",
|
||||
"name" => "Warmseal Roofing",
|
||||
"alternateName" => ["Warmseal", "Warmseal Roofing Services"],
|
||||
"description" => "Professional roofer in Accrington, Lancashire providing expert roof repairs, installations, maintenance, guttering, and roofline services across Accrington, Blackburn, Preston and surrounding areas.",
|
||||
"description" => "Leading roofer in Accrington, Lancashire. Expert roof repairs, installations & maintenance across Accrington, Blackburn, Preston. Free quotes available.",
|
||||
"url" => "https://warmseal-roofing.co.uk",
|
||||
"logo" => "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg",
|
||||
"image" => [
|
||||
@ -272,4 +273,3 @@ function getLocalBusinessSchema() {
|
||||
]
|
||||
];
|
||||
}
|
||||
?>
|
||||
|
||||
162
meta/meta.php
162
meta/meta.php
@ -8,151 +8,155 @@ include_once $URLcorrection . "meta/schema.php";
|
||||
|
||||
if (isset($ometa['title'])) {
|
||||
$meta['title'] = $ometa['title'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['title'] = $metatitle;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['description'])) {
|
||||
$meta['description'] = $ometa['description'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['description'] = $metadescription;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['keywords'])) {
|
||||
$meta['keywords'] = $ometa['keywords'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['keywords'] = $metakeywords;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['robots'])) {
|
||||
$meta['robots'] = $ometa['robots'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['robots'] = $metarobots;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['language'])) {
|
||||
$meta['language'] = $ometa['language'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['language'] = $metalanguage;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['revisit-after'])) {
|
||||
$meta['revisit-after'] = $ometa['revisit-after'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['revisit-after'] = $metarevisit;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['author'])) {
|
||||
$meta['author'] = $ometa['author'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['author'] = $metaauthor;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['apple-touch-icon'])) {
|
||||
$meta['apple-touch-icon'] = $ometa['apple-touch-icon'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['apple-touch-icon'] = $metaappleicon;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['icon32'])) {
|
||||
$meta['icon32'] = $ometa['icon32'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['icon32'] = $metaicon32;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['icon16'])) {
|
||||
$meta['icon16'] = $ometa['icon16'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['icon16'] = $metaicon16;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['site.webmanifest'])) {
|
||||
$meta['site.webmanifest'] = $ometa['site.webmanifest'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['site.webmanifest'] = $metamanifest;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['ogtype'])) {
|
||||
$meta['ogtype'] = $ometa['ogtype'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['ogtype'] = $metaogtype;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['ogurl'])) {
|
||||
$meta['ogurl'] = $ometa['ogurl'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['ogurl'] = $metaogurl;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['ogtitle'])) {
|
||||
$meta['ogtitle'] = $ometa['ogtitle'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['ogtitle'] = $metaogtitle;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['ogdescription'])) {
|
||||
$meta['ogdescription'] = $ometa['ogdescription'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['ogdescription'] = $metaogdescription;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['ogimage'])) {
|
||||
$meta['ogimage'] = $ometa['ogimage'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['ogimage'] = $metaogimage;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['twittercard'])) {
|
||||
$meta['twittercard'] = $ometa['twittercard'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['twittercard'] = $metatwittercard;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['twitterurl'])) {
|
||||
$meta['twitterurl'] = $ometa['twitterurl'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['twitterurl'] = $metatwitterurl;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['twittertitle'])) {
|
||||
$meta['twittertitle'] = $ometa['twittertitle'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['twittertitle'] = $metatwittertitle;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['twitterdescription'])) {
|
||||
$meta['twitterdescription'] = $ometa['twitterdescription'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['twitterdescription'] = $metatwitterdescription;
|
||||
}
|
||||
}
|
||||
if (isset($ometa['twitterimage'])) {
|
||||
$meta['twitterimage'] = $ometa['twitterimage'];
|
||||
} else {
|
||||
} else {
|
||||
$meta['twitterimage'] = $metatwitterimage;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?=$meta['title']?></title>
|
||||
<title><?= $meta['title'] ?></title>
|
||||
|
||||
<meta name="title" content="<?=$meta['title']?>">
|
||||
<meta name="description" content="<?=$meta['description']?>">
|
||||
<meta name="keywords" content="<?=$meta['keywords']?>">
|
||||
<meta name="robots" content="<?=$meta['robots']?>">
|
||||
<meta name="title" content="<?= $meta['title'] ?>">
|
||||
<meta name="description" content="<?= $meta['description'] ?>">
|
||||
<meta name="keywords" content="<?= $meta['keywords'] ?>">
|
||||
<meta name="robots" content="<?= $meta['robots'] ?>">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="language" content="<?=$meta['language']?>">
|
||||
<meta name="revisit-after" content="<?=$meta['revisit-after']?>">
|
||||
<meta name="author" content="<?=$meta['author']?>">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="<?=$meta['apple-touch-icon']?>">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="<?=$meta['icon32']?>">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="<?=$meta['icon16']?>">
|
||||
<!--<link rel="manifest" href="--><?php //=$meta['manifest']?><!--">-->
|
||||
<meta name="language" content="<?= $meta['language'] ?>">
|
||||
<meta name="revisit-after" content="<?= $meta['revisit-after'] ?>">
|
||||
<meta name="author" content="<?= $meta['author'] ?>">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="<?= $meta['apple-touch-icon'] ?>">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="<?= $meta['icon32'] ?>">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="<?= $meta['icon16'] ?>">
|
||||
<!--<link rel="manifest" href="--><?php //=$meta['manifest']
|
||||
?><!--">-->
|
||||
<link rel="mask-icon" href="/meta/favicons/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<link rel="shortcut icon" href="/meta/favicons/favicon.ico">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/meta/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<!-- Canonical URL -->
|
||||
<link rel="canonical" href="https://warmseal-roofing.co.uk<?php echo $_SERVER['REQUEST_URI']; ?>" />
|
||||
|
||||
<!-- Open Graph / Facebook -->
|
||||
<meta property="og:type" content="<?=$meta['ogtype']?>" />
|
||||
<meta property="og:url" content="<?=$meta['ogurl']?>" />
|
||||
<meta property="og:title" content="<?=$meta['ogtitle']?>" />
|
||||
<meta property="og:description" content="<?=$meta['ogdescription']?>"/>
|
||||
<meta property="og:image" content="<?=$meta['ogimage']?>" />
|
||||
<meta property="og:type" content="<?= $meta['ogtype'] ?>" />
|
||||
<meta property="og:url" content="<?= $meta['ogurl'] ?>" />
|
||||
<meta property="og:title" content="<?= $meta['ogtitle'] ?>" />
|
||||
<meta property="og:description" content="<?= $meta['ogdescription'] ?>" />
|
||||
<meta property="og:image" content="<?= $meta['ogimage'] ?>" />
|
||||
|
||||
<!-- Twitter -->
|
||||
<meta property="twitter:card" content="<?=$meta['twittercard'] ?>" />
|
||||
<meta property="twitter:url" content="<?=$meta['twitterurl'] ?>" />
|
||||
<meta property="twitter:title" content="<?=$meta['twittertitle'] ?>" />
|
||||
<meta property="twitter:description" content="<?=$meta['twitterdescription'] ?>" />
|
||||
<meta property="twitter:image" content="<?=$meta['twitterimage'] ?>" />
|
||||
<meta property="twitter:card" content="<?= $meta['twittercard'] ?>" />
|
||||
<meta property="twitter:url" content="<?= $meta['twitterurl'] ?>" />
|
||||
<meta property="twitter:title" content="<?= $meta['twittertitle'] ?>" />
|
||||
<meta property="twitter:description" content="<?= $meta['twitterdescription'] ?>" />
|
||||
<meta property="twitter:image" content="<?= $meta['twitterimage'] ?>" />
|
||||
|
||||
<!-- Schema.org Structured Data -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "RoofingContractor",
|
||||
"name": "Warmseal Roofing",
|
||||
@ -174,8 +178,7 @@ if (isset($ometa['twitterimage'])) {
|
||||
"latitude": 53.7532,
|
||||
"longitude": -2.3610
|
||||
},
|
||||
"areaServed": [
|
||||
{
|
||||
"areaServed": [{
|
||||
"@type": "City",
|
||||
"name": "Accrington"
|
||||
},
|
||||
@ -210,8 +213,7 @@ if (isset($ometa['twitterimage'])) {
|
||||
"priceRange": "££",
|
||||
"paymentAccepted": ["Cash", "Check", "Credit Card", "Bank Transfer"],
|
||||
"currenciesAccepted": "GBP",
|
||||
"openingHoursSpecification": [
|
||||
{
|
||||
"openingHoursSpecification": [{
|
||||
"@type": "OpeningHoursSpecification",
|
||||
"dayOfWeek": [
|
||||
"Monday",
|
||||
@ -233,8 +235,7 @@ if (isset($ometa['twitterimage'])) {
|
||||
"hasOfferCatalog": {
|
||||
"@type": "OfferCatalog",
|
||||
"name": "Roofing Services",
|
||||
"itemListElement": [
|
||||
{
|
||||
"itemListElement": [{
|
||||
"@type": "Offer",
|
||||
"itemOffered": {
|
||||
"@type": "Service",
|
||||
@ -277,22 +278,21 @@ if (isset($ometa['twitterimage'])) {
|
||||
"https://www.facebook.com/profile.php?id=61576598612133",
|
||||
"https://www.instagram.com/warmsealroofing"
|
||||
]
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Page-Specific Schema -->
|
||||
<script type="application/ld+json">
|
||||
<?php
|
||||
$currentPage = isset($Page) ? $Page : 'index';
|
||||
echo generatePageSchema($currentPage, $URLcorrection);
|
||||
?>
|
||||
<?php
|
||||
$currentPage = isset($Page) ? $Page : 'index';
|
||||
echo generatePageSchema($currentPage, $URLcorrection);
|
||||
?>
|
||||
</script>
|
||||
|
||||
<!-- Breadcrumb Schema -->
|
||||
<script type="application/ld+json">
|
||||
<?php
|
||||
$currentPageTitle = isset($PageTitle) ? $PageTitle : 'Home';
|
||||
echo generateBreadcrumbSchema($currentPage, $currentPageTitle);
|
||||
?>
|
||||
<?php
|
||||
$currentPageTitle = isset($PageTitle) ? $PageTitle : 'Home';
|
||||
echo generateBreadcrumbSchema($currentPage, $currentPageTitle);
|
||||
?>
|
||||
</script>
|
||||
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
<?php
|
||||
// Page-specific Schema.org structured data
|
||||
|
||||
function generatePageSchema($page, $URLcorrection = "") {
|
||||
function generatePageSchema($page, $URLcorrection = "")
|
||||
{
|
||||
$baseSchema = [
|
||||
"@context" => "https://schema.org",
|
||||
"@type" => "WebPage",
|
||||
@ -14,7 +15,7 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
];
|
||||
|
||||
// Add page-specific schema based on current page
|
||||
switch($page) {
|
||||
switch ($page) {
|
||||
case 'roof-repairs':
|
||||
$serviceSchema = [
|
||||
"@context" => "https://schema.org",
|
||||
@ -26,7 +27,10 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
"name" => "Warmseal Roofing"
|
||||
],
|
||||
"areaServed" => [
|
||||
"Accrington", "Blackburn", "Preston", "Lancashire"
|
||||
"Accrington",
|
||||
"Blackburn",
|
||||
"Preston",
|
||||
"Lancashire"
|
||||
],
|
||||
"availableChannel" => [
|
||||
"@type" => "ServiceChannel",
|
||||
@ -48,7 +52,10 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
"name" => "Warmseal Roofing"
|
||||
],
|
||||
"areaServed" => [
|
||||
"Accrington", "Blackburn", "Preston", "Lancashire"
|
||||
"Accrington",
|
||||
"Blackburn",
|
||||
"Preston",
|
||||
"Lancashire"
|
||||
],
|
||||
"availableChannel" => [
|
||||
"@type" => "ServiceChannel",
|
||||
@ -70,7 +77,10 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
"name" => "Warmseal Roofing"
|
||||
],
|
||||
"areaServed" => [
|
||||
"Accrington", "Blackburn", "Preston", "Lancashire"
|
||||
"Accrington",
|
||||
"Blackburn",
|
||||
"Preston",
|
||||
"Lancashire"
|
||||
],
|
||||
"availableChannel" => [
|
||||
"@type" => "ServiceChannel",
|
||||
@ -92,7 +102,10 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
"name" => "Warmseal Roofing"
|
||||
],
|
||||
"areaServed" => [
|
||||
"Accrington", "Blackburn", "Preston", "Lancashire"
|
||||
"Accrington",
|
||||
"Blackburn",
|
||||
"Preston",
|
||||
"Lancashire"
|
||||
],
|
||||
"availableChannel" => [
|
||||
"@type" => "ServiceChannel",
|
||||
@ -115,7 +128,10 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
],
|
||||
"about" => "Roofing Projects and Portfolio",
|
||||
"locationCreated" => [
|
||||
"Accrington", "Blackburn", "Preston", "Lancashire"
|
||||
"Accrington",
|
||||
"Blackburn",
|
||||
"Preston",
|
||||
"Lancashire"
|
||||
]
|
||||
];
|
||||
return json_encode([$baseSchema, $portfolioSchema], JSON_UNESCAPED_SLASHES);
|
||||
@ -164,7 +180,8 @@ function generatePageSchema($page, $URLcorrection = "") {
|
||||
}
|
||||
|
||||
// Generate breadcrumb schema
|
||||
function generateBreadcrumbSchema($page, $pageTitle) {
|
||||
function generateBreadcrumbSchema($page, $pageTitle)
|
||||
{
|
||||
$breadcrumbs = [
|
||||
"@context" => "https://schema.org",
|
||||
"@type" => "BreadcrumbList",
|
||||
@ -189,4 +206,3 @@ function generateBreadcrumbSchema($page, $pageTitle) {
|
||||
|
||||
return json_encode($breadcrumbs, JSON_UNESCAPED_SLASHES);
|
||||
}
|
||||
?>
|
||||
|
||||
24
package.json
Normal file
24
package.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "warmseal",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"minify-css": "cleancss -o css/style.min.css css/style.css && cleancss -o css/animate.min.css css/animate.css && cleancss -o css/padding.min.css css/padding.css && cleancss -o css/flaticon.min.css css/flaticon.css && cleancss -o css/bootstrap-datepicker.min.css css/bootstrap-datepicker.css && cleancss -o css/jquery.timepicker.min.css css/jquery.timepicker.css && cleancss -o css/magnific-popup.min.css css/magnific-popup.css",
|
||||
"minify-js": "uglifyjs js/main.js -o js/main.min.js -c -m && uglifyjs js/script.js -o js/script.min.js -c -m && uglifyjs js/google-map.js -o js/google-map.min.js -c -m && uglifyjs js/bootstrap-datepicker.js -o js/bootstrap-datepicker.min.js -c -m && uglifyjs js/jquery.easing.1.3.js -o js/jquery.easing.1.3.min.js -c -m",
|
||||
"minify": "npm run minify-css && npm run minify-js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.hexaspark.com/Acorn_Media/warmseal-roofing.git"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"devDependencies": {
|
||||
"clean-css-cli": "^5.6.3",
|
||||
"uglify-js": "^3.19.3"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user