fb pixel
გამოიწერე YouTube-ის არხიyoutube logoგამოწერა
val-do.com-ის ლოგო
კურსებიბლოგიხ.დ.კ.წესებიკონტაქტიკონვერტორები

კურსებიბლოგიხ.დ.კ.წესებიკონტაქტიკონვერტორები
შესვლა
  1. მთავარი
  2. ბლოგი
  3. Google rich result-ის კომპონენტი Angular აპლიკაციისთვის
Google rich result-ის კომპონენტი Angular აპლიკაციისთვის

Google rich result-ის კომპონენტი Angular აპლიკაციისთვის

როგორც იცით, იმისთვის, რომ გუგლის საძიებო სისტემაში ჩვენი გვერდი ლამაზად მეტად ინფორმირებულად გამოჩნდეს საჭიროა schema.org-ის json-ld-ის გამოყენება.

სტრუქტურის ნიმუშების სანახავად შეგიძლიათ გადახვიდეთ მოცემულ ბმულზე

ანგულარ აპლიკაცას არ აქვს პირდაპირი მხარდაჭერა და სწორედ ამიტომ ავაწყე კომპონენტი, რომელიც უზრუნველყოფს დოკუმენტში json-ld-ის ინტეგრაციას.

პირველ რიგში დავაგენერიროთ კომპონენტი

ng g c json-ld

კომპონენტის გენერაციის შემდეგ, ჩვენი კომპონენტი უნდა გამოიყურებოდეს შემდეგნაირად

json-ld.component.ts

import { DOCUMENT } from '@angular/common';
import { AfterViewInit, Component, Inject, Input, Renderer2 } from '@angular/core';

@Component({
  selector: 'app-json-ld',
  templateUrl: './json-ld.component.html',
  styleUrls: ['./json-ld.component.scss']
})
export class JsonLdComponent implements AfterViewInit {

  @Input() data!: any;

  constructor(
    @Inject(DOCUMENT) private _document: Document,
    private _renderer2: Renderer2
  ) { }

  ngAfterViewInit(): void {
    const jsonLdElement: HTMLElement = this._document.querySelector('[type="application/ld+json"]') as HTMLElement;

    if (!jsonLdElement) {
      const script = this._renderer2.createElement('script');
      script.type = `application/ld+json`;
      script.text = JSON.stringify(this.data);
      this._renderer2.appendChild(this._document.head, script);
      return;
    }

    jsonLdElement.innerText = JSON.stringify(this.data);
  }

}

მას შემდეგ რაც კომპონენტს ავაწყობთ ჩვენ უკვე შეგვიძლია მას @Input() დეკორატორის დახმარებით სასურველი კომპონენტიდან გადმოვაწოდოთ ჩვენთვის სასურველი სტრუქტურის json.

მაგალითად წარმოვიდგინოთ, რომ გვაქვს ონლაინ მაღაზია და გვინდა json-ld-ის ინიციალიზაცია მაღაზიის პროდუქტებზე

product.component.ts

import { Component, OnInit } from '@angular/core';
import { Observable, tap } from 'rxjs';
import { ProductService } from '../services/product.service';

interface Product {
  title: string;
  description: string;
  images: string[];
  price: string;
}

@Component({
  selector: 'app-product',
  templateUrl: './product.component.html',
  styleUrls: ['./product.component.scss']
})
export class ProductComponent implements OnInit {

  product$!: Observable<Product>;
  schema!: any;

  constructor(
    private _productService: ProductService
  ) { }

  ngOnInit(): void {
    this.product$ = this._productService.getProduct().pipe(
      tap(product => {
        this.schema = {
          "@context": "https://schema.org/",
          "@type": "Product",
          "name": product.title,
          "img": product.images,
          "description": product.descr.replace(/(<([^>]+)>)/gi, "").slice(0, 145),
          "sku": product.product_id,
          "offers": {
            "@type": "AggregateOffer",
            "offerCount": product.quantity,
            "lowPrice": product.price,
            "highPrice": product.price,
            "priceCurrency": "GEL",
          }
        }
      })
    );
  }

}

product.component.html

<ng-container *ngIf="(product$|async) as product">
    ... თქვენი კოდი
    <app-json-ld [data]="schema"></app-json-ld>
</ng-container>

პროგრამირების კურსები

  • HTML, CSS-ის საწყისი კურსი, დამწყებთათვის (deprecated - მოძველებული)
  • ჯავასკრიპტის კურსი
  • JavaScript-ის DOM-ის კურსი
  • TypeScript-ის კურსი
  • Angular-ის კურსი
  • HTML, CSS-ის კურსი
  • Reactjs-ის კურსი დამწყებთათვის
  • ალგორითმები
  • Node.js-ის კურსი
  • Dart-ის კურსი
  • C პროგრამირების ენის საფუძვლები

უახლესი ბლოგები პროგრამირებაზე

როგორ ინახება ი...

როგორ ინახება ინფორმაცია. რა არის Bit და Byte?

რატომ არის კომფ...

რატომ არის კომფორტული სამუშაო ოთახი აუცილებელი კოდის წერისა და პროდუქტიული მუშაობისთვის?

რატომ ვერ პოულო...

რატომ ვერ პოულობენ ჯუნიორები სამსახურს?

Inversion Patte...

Inversion Pattern - როგორ დავწეროთ კითხვადი კოდი?

პროგრამირების კურსები
HTML, CSSJavaScriptTypeScriptAngularReactJSNodeJSC
გამომყევი
mipov.net/valdo

© val-do.com 2026 წელი - ყველა უფლება დაცულია

ვერსია 0.1.56