用laravel开发cms,怎么实现类似dede:arclist 模板标签

类似这种

{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen=''
    imgwidth='' imgheight='' listtype='' orderby='' keyword='' limit='0,1'}

    <a href='[field:arcurl/]'>[field:title/]</a>

{/dede:arclist}
cms
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 17

自己写parser跟lexer

4个月前 评论
张三 (楼主) 4个月前
张三 (楼主) 4个月前

View Component

4个月前 评论
张三 (楼主) 4个月前
yangweijie

直接使用tp 视图

4个月前 评论
张三 (楼主) 4个月前
yangweijie (作者) 4个月前
张三 (楼主) 4个月前

把dede的模板解析移植过来

4个月前 评论

这个CMS给谁用啊?现在流行前后端分离,而且现在程序员已经很多了,卷到35都找不到工作了,开发这种 CMS 还有意义吗?

4个月前 评论
seebyyu 4个月前
yangweijie 4个月前
KingMarx (作者) 4个月前
张三 (楼主) 4个月前

给你个我使用的简单示例

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
use Illuminate\Contracts\Foundation\Application;
use App\Services\CmsService;

class CmsServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        // $this->app->singleton(Cms::class, function (Application $app) {
        //     return new Cms();
        // });

        $this->app->bind("cms", function(){
            return new CmsService();
        });
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        // 获取配置项值
        Blade::directive('option', function ($expression) {
            return "<?php echo app('cms')->option({$expression}); ?>";
        });

        // 获取广告内容
        Blade::directive('ad', function ($expression) {
            return "<?php echo app('cms')->ad({$expression}); ?>";
        });

        // 获取频道信息
        Blade::directive('channel', function ($expression) {
            list($slug, $field) = explode(',', $expression);
            return "<?php echo app('cms')->channel({$slug}, {$field}); ?>";
        });

        Blade::directive('hello', function ($expression) {
            list($greet, $name) = explode(',', $expression);
            return "<?php echo {$greet} . ' ' . {$name}; ?>";
        });
    }
}
4个月前 评论

CMS的灵魂确实是模板,还有模板嵌套问题,直接用blade模板扩展不太好处理,不然就是很臃肿

4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!