Các trang

Có một vài phần trong mỗi trang. Những phần này bao gồm cách bố trí, nội dung, và tùy chọn ngôn ngữ.

Bố cục là HTML bao quanh nội dung. Nó bao gồm tiêu đề, chân trang và bất kỳ yếu tố nào khác nhất quán trên tất cả các trang. Bố cục đó được định nghĩa trên một trang khác dưới dạng một hàm TypeScript.

Nội dung là HTML độc nhất cho từng trang. Chúng tôi xác định nó như được hiển thị bên dưới. Hãy chắc chắn bao gồm các lời gọi đến i18Next.t khi thích hợp để hỗ trợ dịch thuật.

Các tùy chọn ngôn ngữ là các ngôn ngữ khác nhau mà trang có sẵn. Chúng tôi định nghĩa những điều đó ở đầu trang. Nó kết nối lộ trình và chức năng trang riêng lẻ với nhau. Việc dịch URL được xử lý trong đó.

TypeScript - pages/ExamplePage.ts
import i18next from "../GlobalSitesCore/i18n";
import { Layout } from "../Layout";
import { RenderProps, renderLanguageFiles } from "../GlobalSitesCore/languages";
import { FileResult } from "../GlobalSitesCore/FileResult";

export async function ExamplePagePages(): Promise<FileResult[]> {
  return renderLanguageFiles({
    subDirectoryInEnglish: undefined,
    fileNameInEnglish: "example-page",
    includeInSitemap: true,
    render: (props) => ExamplePage(props),
  });
}

interface ExamplePageProps extends RenderProps {}

export function ExamplePage(props: ExamplePageProps): string {
  var title = i18next.t(`Example Page`);
  var metaDescription = i18next.t(`This is an example page.`);

  return Layout({
    lang: props.option.code,
    title: title,
    description: metaDescription,
    languageOptions: props.allOptions,
    content: /* HTML */ `
      <h1>${title}</h1>
      <p>${metaDescription}</p>
      <!-- Add more content as needed -->
    `,
  });
}