يمكن لمولد الموقع الثابت المطعوم بشكل مثالي باستخدام THINKPHP 5.0/5.1 تخصيص قواعد الإنشاء ودعم المعلمات الديناميكية ودعم إعدادات نطاق المعلمات. إنه حل لبناء موقع ثابت دون تغيير عملية التطوير الأصلية. سأجري بعض اختبارات الأداء عندما يكون لدي الوقت. إذا كان لديك أي أسئلة أخرى أثناء الاستخدام، يرجى ترك رسالة. إنشاء موقع ثابت، وإنشاء ملف html لإطار عمل ThinkPHP
هذه الفئة مناسبة لكل من الإصدارين TP5.0 و5.1 نظرًا لأن TP5.1 يحتوي على تغييرات أكثر من 5.0، فقد تم تكييف هذا المشروع مع الإصدار، لذا لا تتردد في استخدامه.
public/dist
والضغط على F5 لتحديث تأثير الصفحة الثابتة، يمكنك أيضًا استخدام مسار TP الأصلي أو التوجيه لعرض تأثير القالب. composer require jkbuildhtml/jkbuildhtml
dist_rules.php
في دليل التطبيق، راجع القواعد الثابتة أدناه. // 静态站放置路径:
'dist_path' => 'public/',
// 静态页存放文件夹名 一般放置在public下;静态站点直接指向这个目录即可:
'dist_dir_name' => 'dist',
// 生成的静态页子页的存放目录,即匹配规则中没有@符号的页面的存放目录,注意例中路径中的'dist/site-pages'会进行目录匹配作为替换./或../的依据,所以这个名称在项目文件夹名中最好唯一:
'dist_sub_dir' => 'site-pages',
// 要生成静态页的模块名:
'dist_module_name' => 'index',
// 静态页文件名字中的参数分隔符:
'dist_file_dot' => '_',
// 静态资源路径替换 静态站点根目录下会替换成 `./` 其他会替换成 `../`
'dist_src_match' => '/public/static/',
$builder = new JKBuildHtmlBuilder()
ضع عبارة في أي وحدة تحكم لإنشاء كافة الصفحات الثابتة على دفعات، كل ما عليك فعله هو وضعها في مكان ما في الخلفية. يتم عرض عرض الصفحة سطرا تلو الآخر إذا كنت تريد استخدام اياكس لترميزها بنفسك، بالطبع يمكنك ذلك.
$builder->buildAll();
ويمكن أيضًا إنشاؤها على صفحة واحدة، وبشكل عام، تتم إضافة زر生一个页面
بعد كل صف من البيانات في صفحة القائمة:
$builder->buildOne($path, ['id' => 5]);
تجدر الإشارة إلى أن المسارات التي تم إنشاؤها بواسطة صفحة واحدة هي بشكل عام أسماء وحدات التحكم والطرق، والتي يجب الإعلان عنها في قواعد الإنشاء الثابت، وإلا سيتم ظهور خطأ.
يمكنك أيضًا تغليف طريقة الجلب لوحدة تحكم TP، بحيث يمكن إنشاؤها أثناء التطوير.
protected function fetchHtml()
{
$builder = new JKBuildHtmlBuilder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
dist_dir_name
. وستتمكن الصفحات الثابتة من الوصول إلى هذه الموارد إذا تم وضعها خارج هذا المجلد، فلن يمكن الوصول إليها إلا إذا كان دليل الموقع ليس هذا الدليل.في الأصل، تم وضع موارد TP في أي مكان ضمن الفئة العامة، ولكن مع الفئات التي تم إنشاؤها بشكل ثابت، عليك اتباع القواعد التالية:
dist_rules.php
:وصف زوج القيمة الرئيسية:
ملف قالب TP الأصلي مسار الارتباط:
<?php
// +----------------------------------------------------------------------
// | 生成静态页的规则文件
// +----------------------------------------------------------------------
return [
// 这个是首页 带@的会生成在dist目录下,否则生成在子文件夹里;生成的html文件不带@
'@index' => 'index/index',
'@news' => 'news/index',
// 这个是带db的,表示要查询article表的id列,循环生成静态页
'news_:id' => ['news/find', 'article'],
// 这个是带自定义方法的,表示要执行getjobis方法返回id为键的二维数组,循环生成静态页
'job_:id' => ['jobs/find', 'func:getjobids'],
// 这个是请求tp的模块/控制器/方法,返回一个二维数组
'job_:id_:code' => ['index/index', 'func:dist/index/test'],
];
dist/site-pages
. يمكن أن تكون القيمة "مسار طلب" في شكل控制器/方法
. سيتم إضافة اسم الوحدة المخصصة تلقائيًا عند الطلب. إذا تم تحديد المسار، فسيتم كتابة المسار.
يمكن أن تكون القيمة أيضًا مصفوفة. الأول هو مسار الطلب الذي سيمرر طلب المعلمة، والثاني هو اسم قاعدة البيانات، أي جميع القيم الموجودة في العمود الذي يوجد به حقل المعلمة سيقوم النظام بإنشاء صفحات على دفعات بناءً على المعلمات: مثل 'news_:id' => ['news/find', 'article']، للاستعلام عن عمود المعرف في جدول المقالة.
إذا كنت تريد إضافة شروط استعلام db، فضع القيمة الثالثة على سبيل المثال id < 100
وسيتم تمرير هذا إلى شرط حيث db ويجب أن يتوافق مع بناء جملة استعلام tp، الذي يصبح 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
أو ..."id < 100"]
إذا كنت تريد تخصيص الوظيفة التي تولد المعرفات، فيمكنك تعيين المعلمة الثانية إلى طريقة عامة، والتي يمكن وضعها في common.php (لا يحتاج اسم الوظيفة إلى تضمين func:
:)، أو كتابتها في أي وحدة تحكم: 'func:admin/index/getJobIds'
أو 'func:getjobids'
إذا تم استخدام نوع func، فيجب أن تكون القيمة المرجعة عبارة عن مصفوفة ثنائية الأبعاد تحتوي على معلمات كمفاتيح. على سبيل المثال: ['id' => [2,3,4,5]]
يمكن أن يحتوي نوع func على قيمة ثالثة، والتي يتم تمريرها كمعلمة للوظيفة func
ستقوم وحدة التحكم في الإنشاء الثابت بإنشاء الصفحة غير الطبيعية مباشرة في ملف html ولن توقف الإنشاء.
لينغ فنغ كوي [email protected]
يتوافق تمامًا مع بروتوكول 996ICU وهو مفتوح المصدر تمامًا