feat: induvidual nation pages
This commit is contained in:
parent
cb11246c1e
commit
8e8334981e
|
@ -38,6 +38,7 @@ export default function Meta({ page }: { page: { title: string, user?: any } })
|
||||||
|
|
||||||
<meta property="og:site_name" content="Clyde's Real Survival SMP" />
|
<meta property="og:site_name" content="Clyde's Real Survival SMP" />
|
||||||
<meta property="og:title" content={page.title} />
|
<meta property="og:title" content={page.title} />
|
||||||
|
<meta property="og:url" content={`https://crss.cc${router.asPath}`} />
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:locale" content="en_GB" />
|
<meta property="og:locale" content="en_GB" />
|
||||||
<meta property="og:image" content="https://crss.fra1.cdn.digitaloceanspaces.com/img/social_image.png" />
|
<meta property="og:image" content="https://crss.fra1.cdn.digitaloceanspaces.com/img/social_image.png" />
|
||||||
|
@ -49,25 +50,11 @@ export default function Meta({ page }: { page: { title: string, user?: any } })
|
||||||
<meta name="twitter:image" content="https://crss.fra1.cdn.digitaloceanspaces.com/img/social_image.png" />
|
<meta name="twitter:image" content="https://crss.fra1.cdn.digitaloceanspaces.com/img/social_image.png" />
|
||||||
|
|
||||||
<meta property="twitter:domain" content="crss.cc" />
|
<meta property="twitter:domain" content="crss.cc" />
|
||||||
|
<meta property="twitter:url" content={`https://crss.cc${router.asPath}`} />
|
||||||
|
|
||||||
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(ldJson) }} />
|
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(ldJson) }} />
|
||||||
|
|
||||||
{!page.user && (
|
<link rel="canonical" href={`https://crss.cc${router.asPath}`} />
|
||||||
<>
|
|
||||||
<meta property="og:url" content={`https://crss.cc${router.pathname}`} />
|
|
||||||
<meta property="twitter:url" content={`https://crss.cc${router.pathname}`} />
|
|
||||||
|
|
||||||
<link rel="canonical" href={`https://crss.cc${router.pathname}`} />
|
|
||||||
</>
|
|
||||||
) || (
|
|
||||||
<>
|
|
||||||
<meta property="og:url" content={`https://crss.cc/u/${page.user!.username}`} />
|
|
||||||
<meta property="twitter:url" content={`https://crss.cc/u/${page.user!.username}`} />
|
|
||||||
|
|
||||||
<link rel="canonical" href={`https://crss.cc/u/${page.user!.username}`} />
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
</Head>
|
</Head>
|
||||||
);
|
);
|
||||||
|
|
|
@ -184,6 +184,18 @@ class Database {
|
||||||
|
|
||||||
return rows;
|
return rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getNationCode(code: string): Promise<any> {
|
||||||
|
const [ rows ] = await this.mysqlPool!.execute('SELECT * FROM nations WHERE code = ?', [ code ]);
|
||||||
|
|
||||||
|
return (rows as any)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
async getCompaies(nid: number): Promise<any> {
|
||||||
|
const [ rows ] = await this.mysqlPool!.execute('SELECT * FROM companies WHERE nid = ?', [ nid ]);
|
||||||
|
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Database;
|
export default Database;
|
61
pages/nation/[nation].tsx
Normal file
61
pages/nation/[nation].tsx
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
import Footer from '@/components/Footer';
|
||||||
|
import Meta from '@/components/Meta';
|
||||||
|
import NavBar from '@/components/NavBar';
|
||||||
|
import PageContent from '@/components/PageContent';
|
||||||
|
import Database from '@/lib/Database';
|
||||||
|
|
||||||
|
export default function Nation({ nation, companies }: { nation: any, companies: any[] }) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Meta page={{ title: nation.name }} />
|
||||||
|
<NavBar currentPage={nation.code} />
|
||||||
|
|
||||||
|
<PageContent>
|
||||||
|
<div className="container">
|
||||||
|
<h1>{nation.name}</h1>
|
||||||
|
|
||||||
|
<p>{nation.description}</p>
|
||||||
|
|
||||||
|
<h2>Companies</h2>
|
||||||
|
|
||||||
|
{companies.length > 0 ? (
|
||||||
|
<ul>
|
||||||
|
{companies.map((company) => {
|
||||||
|
return (
|
||||||
|
<li key={company.id}>
|
||||||
|
{company.name}
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
) : (
|
||||||
|
<p>This nation has no companies.</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</PageContent>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getServerSideProps(context: any) {
|
||||||
|
const db = new Database();
|
||||||
|
|
||||||
|
const nation = await db.getNationCode(context.query.nation as string);
|
||||||
|
|
||||||
|
if (!nation) {
|
||||||
|
return {
|
||||||
|
notFound: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const companies = await db.getCompaies(nation.id);
|
||||||
|
|
||||||
|
return {
|
||||||
|
props: {
|
||||||
|
nation,
|
||||||
|
companies
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue