gpt4 book ai didi

laravel - 谷歌 AMP 与 Laravel

转载 作者:行者123 更新时间:2023-12-03 16:56:20 26 4
gpt4 key购买 nike

我最近推出了一个基于 laravel 的电子商务网站。现在我真的认为实现 AMP 是一个好主意,因为它现在支持电子商务(甚至 shopify 和 ebay 都在实现它)

所以我的问题是我们如何在 laravel 上实现 AMP?有没有办法将 desktopMainTempalte.blade.php 用于桌面版本并在移动版本上切换到 mobileMainTemplate.blade.php?我只是不想为移动设备创建一个不同的域,如 m.domain.com。我想要一些有创意的东西,但我不确定我是否朝着正确的方向前进。

如果你在我的鞋子里,你们会做什么?

最佳答案

使用不同的路由和 Controller 来做同样的事情但使用不同的 View 是非常困难的。您可以这样做以获得更好的方法。

  • /amp/ 使用相同的 Web Controller 网址
  • 通过修改 view() 以不同方式查看 amp 页面 helper

  • 放大器路线

    catch /amp/路线,将此添加到您的 RouteServiceProvider.php
    protected function mapAmpRoutes()
    {
    Route::group([
    'middleware' => 'web',
    'namespace' => $this->namespace,
    'prefix' => 'amp',
    ], function ($router) {
    require base_path('routes/web.php');
    });
    }

    还要更改您的 map方法:
    public function map()
    {
    $this->mapAmpRoutes(); // <-- Add this

    $this->mapWebRoutes();

    $this->mapApiRoutes();
    }

    此时所有地址如 example.com/amp/...将引用您的 web.php路线。

    放大器 View 文件

    现在您应该自定义 view()为 amp 渲染不同 View 的助手。
    创建 helpers.phpapp/Http具有查看功能的目录:
    function view($view = null, $data = [], $mergeData = [])
    {
    $factory = app(Illuminate\Contracts\View\Factory::class);

    if (func_num_args() === 0) {
    return $factory;
    }

    //if amp, add '-amp' to view name
    if(request()->segment(1) == 'amp'){
    if(view()->exists($view . '-amp')){
    $view .= '-amp';
    }else{
    abort(404);
    }
    }
    return $factory->make($view, $data, $mergeData);
    }

    在您将它添加到您的 bootstrap/autoload.php 之前,不会加载此功能。文件
    require __DIR__.'/../app/Http/helpers.php'; // <-- add this (should be before require vendor/autoload.php)
    require __DIR__.'/../vendor/autoload.php';

    编辑:如果没有找到 bootstrap/autoload.php文件,搜索 vendor/autoload.php因为 laravel 已经删除了它。 (感谢 MinderMondo 的评论)

    您现在可以为带有“-amp”词缀的 amp 添加任何您喜欢的 View 。例如,如果您有 index.blade.php放大器 View 名称应为 index-amp.blade.php .

    关于laravel - 谷歌 AMP 与 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707938/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com