Lektor CMS: не удается заставить лектор-теги работать должным образом, запрошенный URL не найден на сервере

Я пытаюсь создать блог, используя lektor CMS, для этого .. мне нужна была система тегов , после поиска я нашел плагин lektor в документах lektor, который называется

Я следил за каждый шаг на документах, боролся много , и даже посетил GitHub репо , чтобы увидеть , если есть что - нибудь еще не включен в документах.

Моя проблема в том, когда я пытаюсь навестить localhost:5000/{the_tag_name} скажи, как будто я всегда слышу поговорку, что

Запрошенный URL не найден на сервере. Если вы ввели URL вручную, проверьте правописание и повторите попытку.

Вот что я делал до сих пор:

Перед использованием:

  1. Я изменил маршрут для сообщений в блоге, чтобы они были /posts вместо /blog.

  2. Добавлен формат слага в models/blog.ini в [children]

             [children]
     model = blog-post
     order_by = pub_date, title
     slug_format = {{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}
    
  3. Создал 3 поста, все работало исправно.

На этом этапе я хотел использовать систему тегов, поэтому решил использовать lektor-tags, что я сделал:

  1. Монтаж

            lektor plugins add lektor-tags
    
  2. Созданный configs/tags.ini с этой конфигурацией:

            parent = /
    url_path = {{ this.parent.url_path }}{{ tag }}
    tags_field = tags
    ignore_missing = true
    template = tags.html
    
  3. Созданный templates/tags.html со следующим содержанием:

                {% extends "layout.html" %}
        {% block title %}{{ this.title }}{% endblock %}
        {% block body %}
    
        <div class="container mt-3">
            <b>Tag: {{ this.tag }}</b>
            <b>Items:</b>
            <ul>
                  {% for i in this.items %}
                  <li><a href="{{ i|url }}">{{ i._id }}</a></li>
                  {% else %}
                  <li><em>No items.</em></li>
                  {% endfor %}
            </ul>
        </div> 
        {% endblock %}
    
  4. Отредактировано models/blog-post.ini и добавил:

               [fields.tags]
       type = strings
    
  5. В templates/blog-post.html Я добавил следующее, чтобы показать ссылки на страницу, содержащую список всех сообщений с определенным тегом:

                {% if this.tags %}
        <ul>
             {% for t in this.tags -%}
             <li>
                  <a href="{{ ('/' ~ t.lower())|url }}">
                  All posts tagged {{ t }}
                  </a>
             </li>
             {% endfor %}
        </ul>
        {% endif %}
    
  6. Наконец, я обновил сообщение, добавив несколько тегов от администратора, и убедился, что он есть в content.lrэтого поста. поэтому я остановил сервер lektor dev и снова запустил его lektor servor без ошибок.

Ссылки были в сообщении для тегов, но когда я перехожу по ссылке, скажем, например, для тега python localhost:5000/python я получил 404 Not Found. Я новичок в лекторе. мне интересно, что это такое и как я могу заставить это работать должным образом?


NB: другие плагины, которые я использовал, lektor-minify, lektor-disqus-comments документы для этих плагинов были простыми, и я не запутался, но когда дело дошло до этого конкретного плагина, я был сбит с толку, подчеркнул: документы были не такими уж хорошими и объясняющими, я чувствовал себя полностью потерянным

1 ответ

Решение

Так что в основном я делал это неправильно, потому что хотел использовать корень в качестве родителя в tags.ini вот так :

          parent = /

Я закончил тем, что изменил выражение '/blog@tag/' ~ t.lower() в blog-post.html что-то вроде:

          <a href="{{ ('/' ~ t.lower())|url }}">

делает невозможным создание исходного пути для каждого тега сообщения в блоге

Что я изменил и работал, так это :

  1. Я выбрал posts чтобы быть родителем, обновил configs/tags.ini к :

            parent = /posts
    url_path = {{ this.parent.url_path }}{{ tag }}
    tags_field = tags
    ignore_missing = true
    template = tags.html
    
  2. Обновлено templates/blog-post.html :

            {% if this.tags %}
    <ul>
        {% for t in this.tags -%}
        <li>
            # '/posts@tag/' ~ t.lower() because i changed the route of blog to posts
            <a href="{{ ('/posts@tag/' ~ t.lower())|url }}">
            All posts tagged {{ t }}
            </a>
        </li>
        {% endfor %}
    </ul>
    {% endif %}
    

После запуска lektor clean --yes тогда lekor server все работало правильно, включая систему тегов.

Другие вопросы по тегам