Browse Source

add sitemap

hotfix/class_typo
Dslak 5 years ago
parent
commit
80a9fb9c0a
  1. 4
      src/app/app-routing.module.ts
  2. 4
      src/app/app.module.ts
  3. 2
      src/app/sitemap/sitemap.component.html
  4. 0
      src/app/sitemap/sitemap.component.scss
  5. 25
      src/app/sitemap/sitemap.component.spec.ts
  6. 73
      src/app/sitemap/sitemap.component.ts

4
src/app/app-routing.module.ts

@ -6,6 +6,7 @@ import { PortfolioComponent } from './portfolio/portfolio.component'
import { DetailComponent } from './detail/detail.component' import { DetailComponent } from './detail/detail.component'
import { HomeComponent } from './home/home.component' import { HomeComponent } from './home/home.component'
import { AdminComponent } from './admin/admin.component' import { AdminComponent } from './admin/admin.component'
import { SitemapComponent } from './sitemap/sitemap.component'
const routes: Routes = [ const routes: Routes = [
{ {
@ -32,7 +33,8 @@ const routes: Routes = [
}, },
{ path: 'admin', component: AdminComponent } { path: 'admin', component: AdminComponent }
] ]
}
},
{ path: 'sitemap', component: SitemapComponent }
] ]
@NgModule({ @NgModule({

4
src/app/app.module.ts

@ -16,6 +16,7 @@ import { DetailComponent } from './detail/detail.component';
import { AdminComponent } from './admin/admin.component'; import { AdminComponent } from './admin/admin.component';
import { HomeComponent } from './home/home.component'; import { HomeComponent } from './home/home.component';
import { SpinnerComponent } from './spinner/spinner.component'; import { SpinnerComponent } from './spinner/spinner.component';
import { SitemapComponent } from './sitemap/sitemap.component';
@NgModule({ @NgModule({
declarations: [ declarations: [
@ -27,7 +28,8 @@ import { SpinnerComponent } from './spinner/spinner.component';
DetailComponent, DetailComponent,
AdminComponent, AdminComponent,
HomeComponent, HomeComponent,
SpinnerComponent
SpinnerComponent,
SitemapComponent
], ],
imports: [ imports: [
BrowserModule, BrowserModule,

2
src/app/sitemap/sitemap.component.html

@ -0,0 +1,2 @@
<button (click)="download()">download</button>
{{sitemap}}

0
src/app/sitemap/sitemap.component.scss

25
src/app/sitemap/sitemap.component.spec.ts

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SitemapComponent } from './sitemap.component';
describe('SitemapComponent', () => {
let component: SitemapComponent;
let fixture: ComponentFixture<SitemapComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SitemapComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SitemapComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

73
src/app/sitemap/sitemap.component.ts

@ -0,0 +1,73 @@
import { Component, OnInit } from '@angular/core'
import { Router, NavigationEnd } from '@angular/router'
import { ApisService } from '../services/apis.service'
import { environment } from '../../environments/environment'
@Component({
selector: 'app-sitemap',
templateUrl: './sitemap.component.html',
styleUrls: ['./sitemap.component.scss']
})
export class SitemapComponent implements OnInit {
public basePath = `${environment.BASE_PATH}`
public sitemap: string = ''
constructor(
private apisService: ApisService,
private router: Router
) { }
ngOnInit(): void {
const sections = [
'about',
'portfolio',
'exhibitions',
'installations',
'entertainment',
'performances',
'worhshops'
]
sections.forEach((e) => {
this.sitemap += `<url><loc>${this.basePath}/${e}</loc></url>\n`
})
this.apisService.getPortfolio('portfolio').toPromise().then((response) => {
response.items.forEach((e) => {
this.sitemap += `<url><loc>${this.basePath}/detail/${e.type}/${e.id}/${this.parseTitle(e.title)}</loc></url>\n`
})
this.apisService.getPortfolio('exhibitions').toPromise().then((response) => {
response.items.forEach((e) => {
this.sitemap += `<url><loc>${this.basePath}/detail/exhibitions/${e.id}/${this.parseTitle(e.title)}</loc></url>\n`
})
this.download()
},(error) => {
console.error(error)
}).catch((e) => {
console.error(e)
})
},(error) => {
console.error(error)
}).catch((e) => {
console.error(e)
})
}
parseTitle(title): string {
return title.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-').replace('--', '-').replace('--', '-')
}
download() {
const header = '<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n'
const footer = '\n</urlset>'
const blob = new Blob([`${header}${this.sitemap}${footer}`], { type: 'text/xml' })
const url= window.URL.createObjectURL(blob)
window.location.assign(url)
}
}
Loading…
Cancel
Save