برنامه نویسی

متادیتا و متادیتای پویا در Next.js

ابرداده اطلاعاتی در مورد داده های صفحه وب شما است و برای سئو (بهینه سازی موتور جستجو) و به اشتراک گذاری رسانه های اجتماعی ضروری است.

Metadata چیست؟

فراداده داده‌ای است که داده‌های دیگر را توصیف می‌کند. در زمینه یک صفحه وب، ابرداده اطلاعاتی در مورد صفحه است که مستقیماً به کاربران نشان داده نمی شود، اما می تواند برای موتورهای جستجو، مرورگرها و سایر فناوری ها مفید باشد.

به عنوان مثال، عنوان یک صفحه وب، توضیحات آن، نویسنده، کلمات کلیدی و سایر جزئیات مشابه، همگی ابرداده هستند. اینها در of your HTML document using elements like </code>، <code><meta/></code>، و غیره.</p> <h2><span class="ez-toc-section" id="%D9%85%D8%AA%D8%A7%D8%AF%DB%8C%D8%AA%D8%A7%DB%8C_%D9%BE%D9%88%DB%8C%D8%A7_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F"></span> <p> متادیتای پویا چیست؟<br /> <span class="ez-toc-section-end"></span></h2> <p>فراداده پویا به ابرداده هایی گفته می شود که بر اساس محتوای صفحه تغییر می کنند. به عنوان مثال، ممکن است شما یک وبلاگ با چندین پست داشته باشید و بخواهید هر پستی که در رسانه های اجتماعی به اشتراک گذاشته می شود، عنوان و توضیحات خاص خود را داشته باشد. این را می توان با ابرداده های پویا به دست آورد.</p> <h2><span class="ez-toc-section" id="%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Metadata_%D9%88_Dynamic_Metadata_%D8%AF%D8%B1_Nextjs"></span> <p> استفاده از Metadata و Dynamic Metadata در Next.js<br /> <span class="ez-toc-section-end"></span></h2> <p>Next.js از <code>Head</code> جزء از <code>next/head</code> برای اضافه کردن عناصر به <code/> of your HTML page. You can use this component to add metadata and dynamic metadata to your pages.</p> <p>Here’s an example of how you can do it:</p> <div class="highlight js-code-highlight"> <pre class="highlight jsx"><code><span class="k">import</span> <span class="nx">Head</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">next/head</span><span class="dl">'</span> <span class="k">export</span> <span class="k">default</span> <span class="kd">function</span> <span class="nf">BlogPost</span><span class="p">({</span> <span class="nx">post</span> <span class="p">})</span> <span class="p">{</span> <span class="k">return </span><span class="p">(</span> <span class="p"><></span> <span class="p"><</span><span class="nc">Head</span><span class="p">></span> <span class="p"><</span><span class="nt">title</span><span class="p">></span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">title</span><span class="si">}</span><span class="p"/><span class="nt">title</span><span class="p">></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="p">=</span><span class="s">"description"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">description</span><span class="si">}</span> <span class="p">/></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">property</span><span class="p">=</span><span class="s">"og:title"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">title</span><span class="si">}</span> <span class="p">/></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">property</span><span class="p">=</span><span class="s">"og:description"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">description</span><span class="si">}</span> <span class="p">/></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">property</span><span class="p">=</span><span class="s">"og:image"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">image</span><span class="si">}</span> <span class="p">/></span> <span class="p"/><span class="nc">Head</span><span class="p">></span> <span class="p"><</span><span class="nt">h1</span><span class="p">></span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">title</span><span class="si">}</span><span class="p"/><span class="nt">h1</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span><span class="p">></span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">content</span><span class="si">}</span><span class="p"/><span class="nt">p</span><span class="p">></span> <span class="p">></span> <span class="p">)</span> <span class="p">}</span> </code></pre> <div class="highlight__panel js-actions-panel"> <div class="highlight__panel-action js-fullscreen-code-action"> <svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewbox="0 0 24 24" class="highlight-action crayons-icon highlight-action--fullscreen-on"><title>وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، post یک شی حاوی اطلاعات یک پست وبلاگ است. ابرداده های صفحه به صورت پویا بر اساس ویژگی های تنظیم می شوند post.

راه اندازی متادیتا پویا در Next.js

تنظیم ابرداده پویا در پروژه Next.js شما کاملاً ساده است. در اینجا یک مثال گام به گام آورده شده است:

  1. کامپوننت Head را وارد کنید: Next.js یک را ارائه می دهد Head جزء که می توانید برای اضافه کردن عناصر به آن استفاده کنید of your HTML document. To use it, you need to import it from next/head در فایل کامپوننت شما

    import Head from 'next/head'
    
  2. از کامپوننت Head استفاده کنید: می توانید از Head جزء در کامپوننت شما به صورت زیر است:

    <Head>
      <title>Your titletitle>
    Head>
    

    در این مثال، a را اضافه می کنیم </code> عنصر در سند HTML ما.</p> </li> <li> <p><strong>متادیتا پویا اضافه کنید</strong>: برای افزودن ابرداده پویا، فقط باید داده های پویا را به خود منتقل کنید <code>Head</code> جزء. به عنوان مثال، اگر در حال ساختن یک وبلاگ هستید و می خواهید هر پست عنوان خاص خود را داشته باشد، می توانید این کار را به صورت زیر انجام دهید:</p> <pre class="highlight jsx"><code><span class="k">import</span> <span class="nx">Head</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">next/head</span><span class="dl">'</span> <span class="k">export</span> <span class="k">default</span> <span class="kd">function</span> <span class="nf">BlogPost</span><span class="p">({</span> <span class="nx">post</span> <span class="p">})</span> <span class="p">{</span> <span class="k">return </span><span class="p">(</span> <span class="p"><></span> <span class="p"><</span><span class="nc">Head</span><span class="p">></span> <span class="p"><</span><span class="nt">title</span><span class="p">></span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">title</span><span class="si">}</span><span class="p"/><span class="nt">title</span><span class="p">></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="p">=</span><span class="s">"description"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">description</span><span class="si">}</span> <span class="p">/></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">property</span><span class="p">=</span><span class="s">"og:title"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">title</span><span class="si">}</span> <span class="p">/></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">property</span><span class="p">=</span><span class="s">"og:description"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">description</span><span class="si">}</span> <span class="p">/></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">property</span><span class="p">=</span><span class="s">"og:image"</span> <span class="na">content</span><span class="p">=</span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">image</span><span class="si">}</span> <span class="p">/></span> <span class="p"/><span class="nc">Head</span><span class="p">></span> <span class="p"><</span><span class="nt">h1</span><span class="p">></span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">title</span><span class="si">}</span><span class="p"/><span class="nt">h1</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span><span class="p">></span><span class="si">{</span><span class="nx">post</span><span class="p">.</span><span class="nx">content</span><span class="si">}</span><span class="p"/><span class="nt">p</span><span class="p">></span> <span class="p">></span> <span class="p">)</span> <span class="p">}</span> </code></pre> <p>در این مثال، <code>post</code> یک شی حاوی اطلاعات یک پست وبلاگ است. ابرداده های صفحه به صورت پویا بر اساس ویژگی های تنظیم می شوند <code>post</code>.</p> </li> </ol> <h2><span class="ez-toc-section" id="%D8%A7%D9%87%D9%85%DB%8C%D8%AA_%D8%A7%D8%A8%D8%B1%D8%AF%D8%A7%D8%AF%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B3%D8%A6%D9%88_%D9%88_%D8%B1%D8%B3%D8%A7%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%DB%8C"></span> <p> اهمیت ابرداده برای سئو و رسانه های اجتماعی<br /> <span class="ez-toc-section-end"></span></h2> <p>ابرداده برای سئو و به اشتراک گذاری رسانه های اجتماعی بسیار مهم است.</p> <ul> <li> <strong>سئو</strong>: ابرداده ها مانند عنوان و توضیحات برای موتورهای جستجو برای درک محتوای صفحه شما و نمایش مناسب آن در نتایج جستجو ضروری است.</li> <li> <strong>رسانه های اجتماعی</strong>: ابرداده مانند <code>og:title</code>، <code>og:description</code>، و <code>og:image</code> برای نحوه نمایش محتوای شما هنگام اشتراک گذاری در پلتفرم هایی مانند فیس بوک و توییتر مهم هستند.</li> </ul> <h2><span class="ez-toc-section" id="%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D8%AF%DB%8C%DA%AF%D8%B1_%D9%85%D8%AA%D8%A7%D8%AF%DB%8C%D8%AA%D8%A7"></span> <p> استفاده از انواع دیگر متادیتا<br /> <span class="ez-toc-section-end"></span></h2> <p>علاوه بر ابرداده اصلی، انواع دیگری از ابرداده وجود دارد که می تواند مفید باشد:</p> <ul> <li> <strong>متا ربات ها</strong>: برای کنترل نحوه فهرست بندی صفحه شما توسط موتورهای جستجو. </li> </ul> <div class="highlight js-code-highlight"> <pre class="highlight jsx"><code> <span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="p">=</span><span class="s">"robots"</span> <span class="na">content</span><span class="p">=</span><span class="s">"index, follow"</span> <span class="p">/></span> </code></pre> <div class="highlight__panel js-actions-panel"> <div class="highlight__panel-action js-fullscreen-code-action"> <svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewbox="0 0 24 24" class="highlight-action crayons-icon highlight-action--fullscreen-on"><title>وارد حالت تمام صفحه شوید

    از حالت تمام صفحه خارج شوید

  • Meta Viewport: برای بهبود تجربه در دستگاه های تلفن همراه.
  <meta name="viewport" content="width=device-width, initial-scale=1" />
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • متا چارست: برای تعریف رمزگذاری کاراکتر.
  <meta charset="UTF-8" />
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نمونه کامل متادیتا در Next.js

در اینجا یک مثال کامل تر است که شامل برخی از ابرداده های ذکر شده در بالا است:

import Head from 'next/head'

export default function BlogPost({ post }) {
  return (
    <>
      <Head>
        <title>{post.title} | My Blogtitle>
        <meta name="description" content={post.description} />
        <meta property="og:title" content={post.title} />
        <meta property="og:description" content={post.description} />
        <meta property="og:image" content={post.image} />
        <meta property="og:type" content="article" />
        <meta property="og:url" content={`https://my-site.com/blog/${post.slug}`} />
        <meta name="twitter:card" content="summary_large_image" />
        <meta name="twitter:title" content={post.title} />
        <meta name="twitter:description" content={post.description} />
        <meta name="twitter:image" content={post.image} />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta charset="UTF-8" />
      Head>
      <h1>{post.title}h1>
      <p>{post.content}p>
    >
  )
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بهینه سازی اضافی

  • پیش نمایش ها و ریچ اسنیپت ها: استفاده از داده های ساختاریافته (JSON-LD) را برای بهبود قطعه های غنی در نتایج جستجو در نظر بگیرید.
  <script type="application/ld+json">
    {`
      {
        "@context": "https://schema.org",
        "@type": "Article",
        "headline": "${post.title}",
        "image": "${post.image}",
        "author": "${post.author}",
        "publisher": {
          "@type": "Organization",
          "name": "My Blog",
          "logo": {
            "@type": "ImageObject",
            "url": "https://my-site.com/logo.png"
          }
        },
        "datePublished": "${post.datePublished}"
      }
    `}
  script>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بهترین شیوه ها

  • از تکراری شدن بپرهیزید: مطمئن شوید که ابرداده‌ها را کپی نکنید، زیرا این امر می‌تواند موتورهای جستجو را سردرگم کند.
  • سازگاری در فراداده: برای اطمینان از تجربه کاربری منسجم هنگام اشتراک‌گذاری محتوا، بین عنوان صفحه و Open Graph و ابرداده توییتر سازگاری داشته باشید.

نتیجه

متادیتا و متادیتا پویا ویژگی های قدرتمندی در Next.js هستند که به شما امکان می دهند صفحات خود را برای موتورهای جستجو و رسانه های اجتماعی بهینه کنید. با درک اینکه چگونه آنها کار می کنند و چگونه می توانید از آنها در پروژه های خود استفاده کنید، می توانید به طور قابل توجهی دید و اشتراک گذاری صفحات وب خود را بهبود بخشید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا