首页 > 解决方案 > 识别生成的 URL 路径

问题描述

我的 Laravel 应用程序有这个github 包,使用 composer 创建站点地图,但我无法理解这些站点地图的呈现位置。

在点击我的网站的 /sitemap.xml URL 位置后,我很幸运地找到了主站点地图,但我无法找到其他站点地图,例如受软件包支持的 Google 新闻站点地图之一。

负责的功能似乎是这个,但我的编码技能限制了我理解渲染路径:

/**
 * Returns document with all sitemap items from $items array
 *
 * @param string $format (options: xml, html, txt, ror-rss, ror-rdf, google-news)
 * @param string $style (path to custom xls style like '/styles/xsl/xml-sitemap.xsl')
 *
 * @return View
 */
public function render($format = 'xml', $style = null)
{
    // limit size of sitemap
    if ($this->model->getMaxSize() > 0 && count($this->model->getItems()) > $this->model->getMaxSize())
    {
        $this->model->limitSize($this->model->getMaxSize());
    }
    else if ('google-news' == $format && count($this->model->getItems()) > 1000)
    {
        $this->model->limitSize(1000);
    }
    else if ('google-news' != $format && count($this->model->getItems()) > 50000)
    {
        $this->model->limitSize();
    }

    $data = $this->generate($format, $style);

    if ('html' == $format)
    {
        return $data['content'];
    }

    return $this->response->make($data['content'], 200, $data['headers']);
}

我使用此功能在 HomeController 上生成我的站点地图:

    public function sitemap()
{
    $settings_general = Utils::getSettings("general");

    if ($settings_general->generate_sitemap == 1) {

        // create new sitemap object
        $sitemap = App::make("sitemap");

        // get all posts from db
        $posts = DB::table('posts')->orderBy('created_at', 'desc')->limit(600)->get();

        // add every post to the sitemap
        foreach ($posts as $post) {
            $sitemap->add(URL::to('/') . "/" . $post->slug, $post->updated_at, '1', 'hourly', null, $post->title);
        }

        $pages = DB::table('pages')->orderBy('created_at', 'desc')->get();

        // add every page to the sitemap
        foreach ($pages as $page) {
            $sitemap->add(URL::to('/') . "/" . $page->slug, $page->updated_at, '1', 'hourly', null, $page->title);
        }

        $categories = DB::table('categories')->orderBy('created_at', 'desc')->get();

        // add every category to the sitemap
        foreach ($categories as $category) {

            $sub_categories = SubCategories::where('parent_id', $category->id)->get();

            $sitemap->add(URL::to('/') . "/category/" . $category->slug, $category->updated_at, '1', 'hourly', null, $category->title);

            foreach ($sub_categories as $sub_category) {
                $sitemap->add(URL::to('/') . "/category/" . $category->slug . "/" . $sub_category->slug, $category->updated_at, '1', 'hourly', null, $category->title);
            }
        }

        return $sitemap->render('xml');
    }
}

标签: laravellaravel-5laravel-4

解决方案


推荐阅读