پارامترهای داینامیک
شماره پشتیبانی، ایمیل، قیمت اشتراک، نام شرکت و فایل صوتی معرفی در دهها صفحه و مقاله تکرار میشوند. در TDS اینها پارامتر داینامیک هستند: یک بار در ادمین تعریف میشوند و همهجا با کپی کد خوانده میشوند. تغییر مقدار در ادمین، بدون ویرایش متنها، در کل سیستم اعمال میشود.
وضعیت: beta · قرارداد: کپی کد (خالص) · React: کپی کد · API: کپی کد · ادمین: «پارامترهای داینامیک»
نمونهٔ زنده
با توکاپس از طریق ۰۹۱۲ ۳۴۵ ۶۷۸۹ یا support@tokapps.com در تماس باشید. اشتراک حرفهای: ۱٬۵۰۰٬۰۰۰ تومان.
متن ساده با چند کلید: توکاپس · ۰۹۱۲ ۳۴۵ ۶۷۸۹ · کلید تعریفنشده: [company.fax]
برای پشتیبانی با ۰۹۱۲ ۳۴۵ ۶۷۸۹ تماس بگیرید.
تماس: ۰۹۱۲ ۳۴۵ ۶۷۸۹ · ایمیل: support@tokapps.com
اشتراک حرفهای ۱٬۵۰۰٬۰۰۰ تومان است و توسط توکاپس ارائه میشود.
توکاپس — پشتیبانی: ۰۹۱۲ ۳۴۵ ۶۷۸۹ — support@tokapps.com
شماره فکس: [company.fax] (کلید تعریف نشده)
قرارداد
هر پارامتر یک کپی کد است:
interface ParamDefinition { version: 1; key: string; // company.phone — حروف کوچک لاتین، رقم و نقطه type: 'text' | 'richtext' | 'number' | 'money' | 'phone' | 'email' | 'url' | 'date' | 'boolean' | 'image' | 'audio' | 'video' | 'file' | 'json'; label: { fa: string; en?: string }; value: string | number | boolean | MediaValue | Record<string, unknown>; format?: { numerals?: 'fa' | 'latin'; currency?: 'IRR' | 'IRT'; calendar?: 'persian' | 'gregory'; phone?: 'grouped' | 'plain' }; scope?: 'global' | `theme:${string}` | `product:${string}`; updatedAt: string; updatedBy: string; revision: number;}- کلید پس از ساخت تغییر نمیکند؛ نوع هم. مقدار نسخهدار است و تاریخچه دارد.
- کپی کد خاصتر (تم یا محصول) روی کپی کد برنده است.
- رسانه (کپی کد، کپی کد، کپی کد، کپی کد) مقدار کپی کد دارد؛ کپی کد نسبی کپی کد یا http(s).
- اعتبارسنجی، قالببندی (ارقام فارسی، مبلغ تومان، تاریخ جلالی) و کپی کد همه در کپی کد هستند و در سرور هم کار میکنند.
نصب منبع در محصول
import { DynamicParamsProvider } from '@tokapps/tuk/params';export function Providers({ children }) { return ( <DynamicParamsProvider source={`${process.env.NEXT_PUBLIC_API_URL}/params`} refreshMs={60_000} fallback={staticSnapshot} missing="placeholder" > {children} </DynamicParamsProvider> );}کپی کد میتواند خود snapshot (برای SSR)، نشانی کپی کد یا تابعی باشد که snapshot برمیگرداند. پاسخ کپی کد دارد (کپی کد) و بازخوانیهای بعدی با ۳۰۴ بیهزینهاند.
مصرف در متن
import { Param, DynamicText, useParam } from '@tokapps/tuk/params';<p>تماس با پشتیبانی: <Param k="company.phone" link /></p><DynamicText as="p" text="{{company.name}} — {{company.email}}" />const { formatted, status } = useParam('pricing.pro');- کپی کد یک چیپ درونجریان است؛ کپی کد فقط متن میدهد؛ کپی کد برای phone/email/url لینک میسازد.
- کلید ناشناخته با آیکون هشدار و کپی کد دیده میشود (رنگ تنها نشانه نیست) و در حالت توسعه هشدار میدهد.
سینتکس در متن ساده و مارکداون
| سینتکس | نتیجه |
|---|---|
| کپی کد | مقدار قالببندیشده |
| کپی کد | متن حرفی کپی کد |
| کپی کد | بلوک پخش روی داک از پارامتر صوتی (ویرایشگر) |
همین سینتکس در کپی کد به چیپ قفلشده تبدیل میشود و در خروجی HTML به کپی کد.
تعریف در ادمین
- پنل مدیریت → «پارامترهای داینامیک» → «پارامتر جدید».
- کلید (کپی کد)، نوع (شماره موبایل)، برچسب و مقدار را بدهید. برای رسانه فایل را بارگذاری کنید.
- دکمهٔ کپی، کپی کد را به کلیپبورد میدهد تا در متن یا ویرایشگر درج شود.
- هر ویرایش، نسخهٔ جدید میسازد و مقدار قبلی در تاریخچه میماند؛ بازگرداندن یک کلیک است.
انواع پارامتر
| نوع (کپی کد) | مقدار (کپی کد) | در متن و ویرایشگر | نمونه |
|---|---|---|---|
| کپی کد | رشته | چیپ یا متن ساده | نام شرکت |
| کپی کد | رشته مارکداون | متن قالببندیشده | توضیح کوتاه |
| کپی کد | عدد | ارقام طبق کپی کد | تعداد اعضا |
| کپی کد | عدد | مبلغ با واحد کپی کد یا کپی کد (تومان) | قیمت پلن |
| کپی کد | رشته | شماره گروهبندیشده یا ساده (کپی کد) | شماره پشتیبانی |
| کپی کد | رشته | متن با کپی کد لینک کپی کد میشود | ایمیل تماس |
| کپی کد | رشته (امن) | متن با کپی کد لینک میشود | نشانی سایت |
| کپی کد | رشته ISO | تاریخ جلالی یا میلادی (کپی کد) | تاریخ رویداد |
| کپی کد | کپی کد یا کپی کد | بله/خیر | در دسترس بودن |
| کپی کد | کپی کد | رسانه؛ در کد با کپی کد نمایش داده میشود | لوگوی شرکت |
| کپی کد | کپی کد | بلوک پخش روی داک با کپی کد | پادکست، پیام صوتی |
| کپی کد | کپی کد | رسانه؛ در کد با کپی کد نمایش داده میشود | ویدیوی معرفی |
| کپی کد | کپی کد | پیوند دانلود در کد | بروشور PDF |
| کپی کد | شیء آزاد | فقط در کد؛ در متن نمایش داده نمیشود | تنظیمات ساختاری |
- انواع رسانه (کپی کد، کپی کد، کپی کد، کپی کد) با کپی کد از کپی کد شناخته میشوند.
- کپی کد (کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد) هنگام ذخیره در سرور و در فرم اجرا میشوند.
پارامتر صوتی: تعریف، تنظیم و استفاده
یک پارامتر صوتی یک کپی کد است. تنها کپی کد الزامی است؛ بقیه برای نمایش پلیر و داکاند.
{ "version": 1, "key": "audio.intro", "type": "audio", "label": { "fa": "پیام صوتی معرفی" }, "description": "پخششونده روی داک در صفحهٔ اصلی", "value": { "src": "/samples/audio-intro.wav", "title": "معرفی توکاپس", "subtitle": "نمونه", "duration": 4, "mime": "audio/wav" }, "scope": "global"}قواعد کپی کد:
- کپی کد نسبی (کپی کد، کپی کد) یا کپی کد است؛ کپی کد و کپی کد رد میشوند.
- کپی کد و کپی کد در پلیر داک نمایش داده میشوند؛ کپی کد فقط برای کپی کد لازم است.
- کپی کد (ثانیه) برای نمایش زمان در پلیر؛ اختیاری است.
استفاده در ویرایشگر:
- در نوار ابزار «بلوک پخش از پارامتر صوتی» را بزنید؛ انتخابگر فقط پارامترهای کپی کد را نشان میدهد.
- کلید کپی کد درج میشود و در متن مارکداون بهصورت کپی کد ذخیره میشود.
- در رندر، پلیر مقدار زندهٔ پارامتر را میخواند؛ اگر ادمین کپی کد را عوض کند، همهٔ صفحات بدون ویرایش متن به فایل جدید میروند.
import { RichTextEditor } from '@tokapps/editor';import { DynamicParamsProvider } from '@tokapps/tuk/params';<DynamicParamsProvider source="/api/params"> <RichTextEditor label="مقاله" format="markdown" defaultValue="::player{param=audio.intro}" tools={['bold', 'param', 'block']} /></DynamicParamsProvider>تفاوت با آپلود صوت در نوار ابزار: ابزار «افزودن صوت» فایل را همانجا در سند ذخیره میکند (گرهٔ کپی کد با کپی کد ثابت). این مقدار به پارامتر وصل نیست؛ برای استفادهٔ مشترک در چند صفحه، پارامتر بسازید.
ثابت یا قابل تنظیم؟
| چیز | محل تعریف | مقدار واقعی کجاست | چه کسی تغییر میدهد |
|---|---|---|---|
| پارامتر (هر کپی کد) | قرارداد کپی کد | سرور (کپی کد) | ادمین، یا کپی کد |
| کلید کپی کد یا کپی کد در متن | متن سند | فقط کلید در سند | نویسنده، با درج از انتخابگر |
| ابزارهای نوار (تصویر، ویدیو، صوت، فایل، جاسازی، بلوک) | کپی کد در کد | کد | توسعهدهنده با کپی کد |
| فایل صوتی/تصویری که با آپلود درج شده | خود سند | کپی کد در سند | نویسنده با حذف و درج دوباره |
| ویرایش تصویر (برش، چرخش، اندازه) | کپی کد با کپی کد | کد کامپوننت | توسعهدهنده؛ ادمین آن را تغییر نمیدهد |
پس: «پارامتر صوتی» یک نوع داده در سیستم است که ادمین میسازد؛ «ابزار تصویر» یک قابلیت ثابت رابط ویرایشگر است که با کپی کد فعال یا غیرفعال میشود.
انتقال داده به ویرایشگر و کامپوننتهای فرم
ویرایشگر و هر کامپوننت کنترلشدهٔ دیگر یک قرارداد یکسان دارند:
| پراپ | نقش |
|---|---|
| کپی کد / کپی کد | ورودی: رشته (مارکداون/HTML) یا سند JSON (کپی کد) |
| کپی کد | شکل ذخیره: کپی کد (پیشفرض)، کپی کد، کپی کد |
| کپی کد | خروجی هر تغییر؛ کپی کد مطابق کپی کد است |
| کپی کد | در فرم HTML یک کپی کد با خروجی میسازد |
| کپی کد یا کپی کد | فهرست پارامترها برای چیپ و انتخابگر |
| کپی کد | آداپتور آپلود؛ باید کپی کد برگرداند |
import { useState } from 'react';import { RichTextEditor } from '@tokapps/editor';import { Input, Button } from '@tokapps/tuk';export function ArticleForm() { const [title, setTitle] = useState(''); const [body, setBody] = useState(''); return ( <form method="post" action="/api/articles"> <Input label="عنوان" name="title" value={title} onChange={setTitle} /> <RichTextEditor label="متن مقاله" name="body" format="markdown" value={body} onChange={(out) => setBody(out as string)} validators={[{ type: 'required', message: 'متن الزامی است' }]} /> <Button type="submit" variant="primary">ثبت</Button> </form> );}- برای فرم بدون JavaScript از کپی کد استفاده کنید؛ برای کنترل کامل از کپی کد و کپی کد کنترلشده.
- کامپوننتهای دیزاینسیستم (کپی کد، کپی کد، کپی کد…) همین الگوی کپی کد/کپی کد/کپی کد را دارند؛ پارامتر را با کپی کد میخوانید و مقدار اولیه را از آن میگیرید.
تحویل خروجی: ذخیره، رندر و generate
- ذخیره: خروجی کپی کد را همانطور که هست ذخیره کنید؛ در کپی کد متن کوتاهتر و قابل جستجو است، در کپی کد ساختار کامل سند (با گرههای کپی کد و کپی کد) حفظ میشود.
- رندر در سرور یا SSR: از کپی کد استفاده کنید تا پارامترها با مقدار زنده حل شوند:
import { toHTML } from '@tokapps/editor/render';const html = toHTML(articleDoc, { params: snapshot, locale: 'fa', missing: 'placeholder' });کپی کد را از کپی کد یا از همان کپی کد پروایدر بگیرید. کپی کد مشخص میکند کلید ناشناخته چطور نشان داده شود (کپی کد، کپی کد، کپی کد).
- پیشنمایش در ویرایشگر: دکمهٔ «پیشنمایش» نوار ابزار، همان سند را فقطخواندنی نشان میدهد؛ چیپهای کپی کد مقدار زنده، و بلوک کپی کد پلیر پخش روی داک را نشان میدهند. ویرایشگر اصلی حفظ میشود و با دکمهٔ دوباره به آن برمیگردید. (این حالت برای کپی کد هم همان است.)
- نمایش فقطخواندنی در کلاینت: کپی کد با کپی کد همان سند را بدون امکان ویرایش نشان میدهد؛ پارامترها و پلیر صوتی همانجا زنده حل میشوند.
- generate مستندات: هر تغییری در MDX این صفحات با کپی کد به کپی کد، کپی کد و کپی کد میرسد؛ پس از آن مستندات برای ایجنتها هم بهروز است.
قاعدهٔ ایجنتها
واقعیتهای شرکت/محصول (شماره، ایمیل، نشانی، قیمت، نام) هرگز بهصورت ثابت در متن رابط نوشته نمیشوند؛ از کپی کد یا کپی کد استفاده میشود (قاعدهٔ MCP کپی کد). فهرست کلیدهای پروژه از کپی کد در اختیار سرور MCP است.