Lynx SEO
lynxcms/seo 會寫入標題、描述、標準鏈結、機器人規則、Open Graph、X(Twitter)及 hreflang 標籤,並提供 /robots.txt 服務。
渲染
<head>
<meta charset="utf-8">
<x-lynx-seo :page="$page" />
</head>
它會取代 <title> 和 @hreflang。若需過濾清單,可針對回應覆寫:<x-lynx-seo :page="$page" robots="noindex, follow" :canonical="$page->url" />(支援的鍵值為 title、description、canonical、robots;同樣的陣列可用於 @seo($page, [...]) 和 lynx()->seo($page, [...]))。@seo($page) 效果相同;lynx()->seo($page) 則會回傳一個 SeoData 物件,供自訂 head 使用。
欄位
為每個模板啟用 SEO 功能,頁面便會獲得 seo_title、seo_description、seo_image、seo_noindex 和 seo_canonical 欄位:
lynx()->run(\LynxCms\Seo\Actions\EnableSeo::class, ['template' => 'article']);
空欄位會依序回退:使用網站標題模式中的頁面標題、lynx-seo.description_fields 第一個有文字的欄位、lynx-seo.image_fields 的第一個圖片,最後是設定頁面中的預設值(lynx()->settings('seo-settings'))。
非正式環境中,每個頁面都會宣告 noindex,且 robots.txt 封鎖所有路徑(lynx-seo.block_non_production)。
結構化資料
每個頁面都會自動產生 JSON-LD 圖表(WebSite、Organization、WebPage、BreadcrumbList)。可在 SEO 設定頁面(seo_schemas 矩陣,項目類型為 mapping:seo_schema_template、seo_schema_type、seo_schema_map)或管理員的「結構化資料」分頁中,將模板對應到特定的 schema.org 類型。對應行採用 property: source 格式,其中 source 可以是欄位、@title、@url、@published、@modified、常數(如 =EUR),或是 @organization(代表網站擁有者,用於 author、publisher、provider 或 organizer):
name: @title
startDate: starts
location: venue
offers.priceCurrency: =EUR
亦可透過 app(\LynxCms\Seo\JsonLd\JsonLd::class)->extend(fn ($page, $graph) => $graph->add([...])) 新增其他節點。
檢查
seo_inspect 讀取工具能以特定語言顯示頁面的最終標籤。管理 SEO 需要 seo.manage 權限。