[Php] 在不使用作曲者的情况下在laravel项目中生成动态站点地图


Answers

假设您希望您的网站的sitemap.xml文件包含数据库中所有医生和患者的链接,则可以这样做:

在routes.php文件..

Route::get("sitemap.xml", array(
    "as"   => "sitemap",
    "uses" => "HomeController@sitemap", // or any other controller you want to use
));

在HomeController.php文件(如果你决定使用HomeController)..

public function sitemap()
{
    $doctors = Doctor::remember(59) // chach this query for 59 minutes
        ->select(["id", "updated_at"]) 
        // you may want to add where clauses here according to your needs
        ->orderBy("id", "desc")
        ->take(50000) // each Sitemap file must have no more than 50,000 URLs and must be no larger than 10MB
        ->get();

    $patients = Patient::remember(59) // chach this query for 59 minutes
        ->select(["id", "updated_at"]) 
        // you may want to add where clauses here according to your needs
        ->orderBy("id", "desc")
        ->take(50000) // each Sitemap file must have no more than 50,000 URLs and must be no larger than 10MB
        ->get();

    $content = View::make('sitemap', ['doctors' => $doctors, 'patients' => $patients]);
    return Response::make($content)->header('Content-Type', 'text/xml;charset=utf-8');
}

在views / sitemap.blade.php文件..

<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach($doctors as $doctor)
    <url>
        <loc>{{ URL::route("doctors.show", [$doctor->id]) }}</loc>
        <lastmod>{{ gmdate(DateTime::W3C, strtotime($doctor->updated_at)) }}</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>
@endforeach

@foreach($patients as $patient)
    <url>
        <loc>{{ URL::route("patients.show", [$patient->id]) }}</loc>
        <lastmod>{{ gmdate(DateTime::W3C, strtotime($patient->updated_at)) }}</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>
@endforeach
</urlset>
Question

我想为我的laravel项目生成Dynamic sitemap 。 我已经在很多网站上搜索了一个答案。 其中一些人使用作曲家来描述它。 我没有得到如何做到这一点。 并在其他一些网站,他们写代码从DB循环获取网址。 在我的项目分贝,我没有保存任何网址。 我的项目是一个医生和病人的网站。 那么有没有人知道如何编写php / laravel codes for dynamic sitemap generation

编辑

我是一个新手,所以我只是不熟悉这个作曲家。 任何人都可以请告诉我,如果我从github下载laravel-sitemap-master.zip,我可以提取它并保存在我的项目目录? 如果有人请回答,这将是非常有帮助的。