Trao đổi về dự án
Partitech Sonata Extra Bundle

Gói Sonata Extra: tạo sitemap

Tích hợp với PrestaSitemapBundle Sonata Extra tích hợp với PrestaSitemapBundle để tạo một tập tin sitemap.xml. Việc tạo ra bao gồm hình ảnh, bài viết và các trang nội dung của ứng dụng. Quá trình này hoàn toàn tự động và bao gồm cả việc hỗ trợ các liên kết ...

Tích hợp với PrestaSitemapBundle

Sonata Extra tích hợp với PrestaSitemapBundle để tạo một tập tin sitemap.xml. Việc tạo ra bao gồm hình ảnh, bài viết và các trang nội dung của ứng dụng. Quá trình này hoàn toàn tự động và bao gồm cả việc hỗ trợ các liên kết đa ngôn ngữ.

Mở rộng sitemap

Người dùng muốn tùy chỉnh thêm sơ đồ trang web, đặc biệt là bằng cách thêm các tài nguyên bổ sung từ các bộ điều khiển Symfony, được khuyến khích tham khảo tài liệu chính thức của « PrestaSitemapBundle ». Tài liệu này cung cấp các hướng dẫn chi tiết và các ví dụ về cách sử dụng bundle một cách hiệu quả để mở rộng các chức năng của sơ đồ trang web trong các ứng dụng dựa trên Symfony.

Tài liệu chính thức cho phép cụ thể :

  • Hiểu các chức năng chính của "PrestaSitemapBundle".
  • Học cách thêm URL hoặc tài nguyên tùy chỉnh vào sơ đồ trang web.
  • Triển khai các cấu hình phù hợp với các trang phức tạp hơn.

Cấu hình cơ bản

Hãy lấy một trang web có sẵn bằng bốn ngôn ngữ: https://my-website.dev/{en,fr,es,it}. Mỗi địa phương đều có phiên bản sitemap riêng của mình.

Đối với khối lượng nội dung vừa phải, bạn có thể sử dụng chức năng tạo theo thời gian thực của PrestaSitemapBundle. Điều chỉnh các tham số phù hợp với dự án của bạn:

# config/packages/presta_sitemap.yaml
presta_sitemap:
  defaults:
    priority: 1
    changefreq: daily
    lastmod: now
# config/routes.yaml
presta_sitemap:
  resource: "@PrestaSitemapBundle/config/routing.yml"
# public/robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://my-website.dev/en/sitemap.xml
Sitemap: https://my-website.dev/fr/sitemap.xml
Sitemap: https://my-website.dev/es/sitemap.xml
Sitemap: https://my-website.dev/it/sitemap.xml

Đó là tất cả.

Với khối lượng lớn bài viết, hãy ưu tiên tạo theo kế hoạch trên đĩa. Đặt các tệp được tạo vào một thư mục công cộng riêng: public/sitemaps/.Mỗi ngôn ngữ sẽ có thư mục riêng của nó, vì vậy:

public/sitemaps/en
public/sitemaps/fr
public/sitemaps/es
public/sitemaps/it
# config/packages/presta_sitemap.yaml
presta_sitemap:
  defaults:
    priority: 1
    changefreq: daily
    lastmod: now

Xóa đường nếu bạn vô hiệu hóa việc tạo theo yêu cầu:

# config/routes.yaml
#presta_sitemap:
#  resource: "@PrestaSitemapBundle/config/routing.yml"

Đăng nhập vào shell của bạn và thực thi các lệnh tạo. PrestaSitemapBundle đã cung cấp sẵn lệnh tạo; chỉ cần cung cấp cho nó bối cảnh HTTP và thư mục đầu ra:

SYMFONY_HTTP_CONTEXT_URL=""https://my-website.dev/en"symfony console presta:sitemaps:dump public/sitemaps/en/ --base-url" https://my-website.dev/en

Sau đó triển khai lệnh cho từng địa phương trong một kịch bản có thể tự động hóa:

#!/bin/sh

SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/en" symfony console presta:sitemaps:dump public/sitemaps/en/  --base-url https://my-website.dev/sitemaps/en
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/fr" symfony console presta:sitemaps:dump public/sitemaps/fr/  --base-url https://my-website.dev/sitemaps/fr
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/es" symfony console presta:sitemaps:dump public/sitemaps/es/  --base-url https://my-website.dev/sitemaps/es
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/it" symfony console presta:sitemaps:dump public/sitemaps/it/  --base-url https://my-website.dev/sitemaps/it

Chạy script này với cron hoặc lịch trình thường dùng của bạn. Đây là kết quả:

❯ tree public/sitemaps/ -l
public/sitemaps/
├── en
│   ├── sitemap.Articles.xml
│   ├── sitemap.Medias.xml
│   ├── sitemap.Pages.xml
│   └── sitemap.xml
├── es
│   ├── sitemap.Medias.xml
│   ├── sitemap.Pages.xml
│   └── sitemap.xml
├── fr
│   ├── sitemap.Articles.xml
│   ├── sitemap.Medias.xml
│   ├── sitemap.Pages.xml
│   └── sitemap.xml
└── it
    ├── sitemap.Medias.xml
    ├── sitemap.Pages.xml
    └── sitemap.xml

Điều cuối cùng là tạo tệp robots.txt của bạn để trỏ đến các sitemap của bạn.

# public/robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://my-website.dev/sitemaps/en/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/fr/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/es/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/it/sitemap.xml

Kiểm soát kết quả được tạo

Dòng tạo sơ đồ trang web Sonata Extra

Sau khi tạo, kiểm tra mã HTTP, tính hợp lệ của XML, URL chuẩn và các liên kết hreflang. Tệp robots.txt phải tham chiếu URL công khai của sơ đồ trang web, mà không chặn các tài nguyên cần thiết cho việc hiển thị.

Chia sẻ bài viết