تخطّ إلى المحتوى
TubePress — مجاني، مستضاف ذاتياً & مُصان باستمرار
مرجع المطوّرين

مرجع واجهة برمجة القوالب

مرجع واجهة برمجة قوالب TubePress: كل متغير قالب عام، ودالة مساعدة، وفئة متاحة عند بناء أو تخصيص قالب موقع تيوب.

هذه الصفحة هي المرجع الشامل لكل ما يمكن للثيم استخدامه: المتغيرات العامة المُحقنة في كل قالب، والمتغيرات الخاصة بكل قالب، والفئات المساعدة المتاحة في كود الثيم. إذا كنت تبني ثيمًا أو تخصصه، احتفظ بهذه الصفحة مفتوحة إلى جانب تطوير الثيم.

يُعرض كل قالب بواسطة ThemeRenderer::render($template, $data). يقوم المُعرض بحقن مجموعة من المتغيرات العامة ذات البادئة $_، ودمج البيانات $data الخاصة بالقالب، وتشغيل فلتر theme.template_data، وتخزين قالبك مؤقتًا في $content، ثم تحميل layout.php.

المتغيرات العامة

هذه المتغيرات متاحة في كل قالب وفي layout.php.

الموقع

المتغيرالنوعالوصف
$_templatestringاسم القالب الحالي (مثلاً: 'home'، 'video')
$_siteNamestringاسم الموقع من الإعدادات
$_siteDescriptionstringوصف الموقع
$_siteUrlstringرابط الموقع
$_videosPerRowintأعمدة الشبكة (4، 5 أو 6)
$_userarray\|nullالمستخدم المسجَّل الدخول، أو null
$_footerPagesarrayالصفحات الثابتة المُحددة للتذييل
$_registrationEnabledboolتفعيل التسجيل/إيقافه
$_ctrEnabledboolتفعيل ترتيب CTR/إيقافه

المظهر

المتغيرالنوعالوصف
$_siteLogostringاسم ملف الشعار (في /uploads/branding/)
$_siteFaviconstringاسم ملف الأيقونة
$_siteBackgroundstringاسم ملف صورة الخلفية
$_siteBackgroundModestring'cover'، 'contain' أو 'repeat'
$_colorOverridesstringكتلة <style> مع خصائص CSS المخصصة
$_menuSearchboolإظهار شريط البحث
$_menuItemsarrayعناصر التنقل (key، label، url، enabled، templates)

اللغة والإقليم

المتغيرالنوعالوصف
$_localestringرمز اللغة الحالية (مثلاً: 'en')
$_directionstring'ltr' أو 'rtl'
$_isRtlboolلغة من اليمين إلى اليسار
$_availableLangsarrayاللغات المتاحة
$_langPrefixstringبادئة الرابط (مثلاً: '/fr' أو '')

إعدادات بطاقة الفيديو

المتغيرالنوعالوصف
$_cardShowDurationboolإظهار شارة المدة
$_cardShowTitleboolإظهار عنوان الفيديو
$_cardMetaLeftstringالبيانات الوصفية اليسرى: 'views'، 'likes'، 'time'، 'none'
$_cardMetaRightstringالبيانات الوصفية اليمنى (نفس الخيارات)
$_cardGridGapintفجوة الشبكة بالبكسل
$_cardBorderRadiusintنصف قطر حواف البطاقة بالبكسل
$_cardThumbnailHoverboolتأثير التحويم على الصورة المصغرة
$_cardTitleLinesintأسطر العنوان (1 أو 2)

إعدادات صفحة المشاهدة

المتغيرالنوعالوصف
$_watchShowViewsboolإظهار عدد المشاهدات
$_watchShowDurationboolإظهار المدة
$_watchShowDateboolإظهار تاريخ النشر
$_watchShowLikesboolإظهار الإعجاب/عدم الإعجاب
$_watchShowFavoritesboolإظهار زر المفضلة
$_watchShowPornstarsboolإظهار المؤدين
$_watchShowChannelsboolإظهار القنوات
$_watchShowCategoriesboolإظهار الفئات
$_watchShowTagsboolإظهار الوسوم
$_commentsEnabledboolالتعليقات مفعّلة
هذه إعدادات، وليست سحرًا. تأتي كل قيم $_card* و$_watch* مباشرةً من شاشة Appearance في لوحة الإدارة، مما يتيح لأصحاب المواقع تغيير مظهر ثيمك دون المساس بالكود — بشرط أن تقرأ هذه المتغيرات عوضًا عن ترميز القيم بشكل مباشر.

متغيرات خاصة بكل قالب

بالإضافة إلى المتغيرات العامة، يستقبل كل قالب بياناته الخاصة.

home.php

المتغيرالنوع
$videosمصفوفة — صفوف الفيديو
$paginationكائن Pagination
$sortسلسلة نصية — مفتاح الترتيب الحالي

video.php

المتغيرالنوع
$videoمصفوفة — الفيديو الكامل مع الفئات، الوسوم، المؤدين، القنوات
$categories, $tags, $performersمصفوفة
$commentsمصفوفة
$similarمصفوفة — مقاطع فيديو مشابهة
$recommendedمصفوفة — مقاطع فيديو موصى بها
$userVotestring\|null — 'like'، 'dislike' أو null
$isFavoritedbool

category.php / tag.php / performer.php / channel.php

المتغيرالنوع
$category / $tag / $performer / $channelمصفوفة — الكيان
$videosمصفوفة — صفوف الفيديو
$paginationكائن Pagination
$sortسلسلة نصية

قوالب القوائم

القالبالمتغيرات الرئيسية
categories.php$categories — كل منها يحتوي على video_count؛ عند تفعيل CTR، يوجد best_video_thumbnail
performers.php$performersvideo_count؛ عند تفعيل CTR، يوجد best_video_thumbnail، total_ctr، مرتبة حسب CTR؛ $pagination
channels.phpنفس هيكل المؤدين
search.php$query, $videos, $pagination

فئات مساعدة

هذه المساعدات الثابتة متاحة في كل قالب.

الفئةالأساليب الرئيسية
ThemeRenderer::enqueueCSS($url, $priority), ::enqueueJS($url, $priority), ::partial($name, $data), ::bodyClass(), ::renderCSS(), ::renderJS()
ThemeManager::assetUrl($path), ::themePath(), ::templatePath($t), ::active(), ::info($key)
ImpressionTracker::collect($videoId), ::flush(), ::isBot()
Format::number($n), ::duration($seconds), ::timeAgo($datetime), ::fileSize($bytes)
Pagination->total, ->page, ->totalPages, ->offset, ->hasPrev(), ->hasNext(), ->pages(), ->prevUrl(), ->nextUrl()
Router::url($path), ::csrfField(), ::csrfToken(), ::langPrefix()
HookSystem::doAction($event, ...$args), ::applyFilter($filter, $value, ...$args)
Auth::check(), ::user(), ::id()
Setting::get($key, $default)
__($key, $replacements)مساعد الترجمة
url($path)اختصار لـ Router::url($path)

تدفق العرض

  1. وحدة التحكم تستدعي المُعرض. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. تُحقن المتغيرات العامة. تُضاف متغيرات الموقع، والمظهر، واللغة، والبطاقة/المشاهدة ذات البادئة $_.
  3. يمكن للإضافات تعديل البيانات. يُشغَّل HookSystem::applyFilter('theme.template_data', $data, $templateName).
  4. يُعرض القالب. يُخزَّن ملف قالبك مؤقتًا في $content.
  5. يُحمَّل التخطيط. يستقبل layout.php المتغير $content مع جميع المتغيرات.
  6. يُرسَل تحديث الانطباعات. يُرسل ImpressionTracker::flush() تحديث الانطباعات المُجمَّعة (CTR).
  7. يُشغَّل Cron. يُنفِّذ CronManager::run() أي مهام مجدولة مستحقة.

متطلبات layout.php

يجب أن يؤدي ملف layout.php الخاص بالثيم جميع ما يلي:

  1. إخراج هيكل HTML الكامل (<!DOCTYPE html></html>).
  2. تضمين <?= ThemeRenderer::renderCSS() ?> داخل <head>.
  3. تضمين <?= $_colorOverrides ?> داخل <head>.
  4. إخراج $content داخل <main>.
  5. تضمين <?= ThemeRenderer::renderJS() ?> قبل </body>.
  6. استدعاء <?php ImpressionTracker::flush(); ?> قبل </body> (لـ CTR).
  7. استدعاء <?php HookSystem::doAction('head.meta'); ?> داخل <head>.
  8. استدعاء <?php HookSystem::doAction('footer.scripts'); ?> قبل </body>.

الحل الاحتياطي للقوالب

إذا كان قالب ما غير موجود في الثيم النشط، يعود TubePress إلى ثيم Simply المُضمَّن. لذلك، يحتاج الثيم المخصص فقط إلى تجاوز القوالب التي يريد تغييرها فعلاً — ابدأ بقالب واحد وتوسع من هناك.

الخطوات التالية

لا تزال عالقاً؟

افتح تذكرة من لوحة التحكم وسيساعدك فريقنا.

جرّب العرض التجريبي المباشر → تحميل TubePress →