Как фильтровать по тегу, а не по заголовку - PullRequest
0 голосов
/ 07 мая 2018

Программист-новичок ищет несколько советов по поводу кода, который я пытаюсь научиться читать и исправлять в hubSpot. Я хочу получить код для поиска в блогах по тегам, а не только по названию. Любой совет будет принят во внимание. Я выложу код ниже. Я был бы признателен за любое объяснение того, что происходит с ним, поскольку у меня очень мало опыта работы с базами данных. Спасибо!

<div class="body-container-wrapper">
    <div class="body-container container-fluid">

<div class="row-fluid-wrapper row-depth-1 row-number-1 ">
<div class="row-fluid ">
<div class="span12 widget-span widget-type-cell flush-rows" style="" data-widget-type="cell" data-x="0" data-w="12">

<div class="row-fluid-wrapper row-depth-1 row-number-2 ">
<div class="row-fluid ">
<div class="span12 widget-span widget-type-cell container" style="" data-widget-type="cell" data-x="0" data-w="12">

<div class="row-fluid-wrapper row-depth-1 row-number-3 ">
<div class="row-fluid ">
<div class="span12 widget-span widget-type-raw_jinja " style="" data-widget-type="raw_jinja" data-x="0" data-w="12">
{# Instead of trying to sort the contents directly, make a list of just event dates and post ids. #}
{% set events = utility.event_looper(contents, (topic or simple_list_page or blog_author))|split(',')|sort(simple_list_page or topic == 'past-events' or topic == 'webinar', True) %}
{% set months = utility.month_looper(contents, (topic or simple_list_page or blog_author))|split(',')|sort(simple_list_page or topic == 'past-events' or blog_author, True)|unique %}
{% set page_number = request.query_dict.page|int or 1 %}
{% set posts_per_page = 1000 if simple_list_page else 12 %}
{% set max_pages = (events|count / posts_per_page)|round(0, 'ceil') %}
{% if page_number > max_pages %}
    {% set page_number = max_pages %}
{% endif %}
{% set offset = (page_number - 1) * posts_per_page %}
{% set base_url = group.absolute_url ~ '/' %}
{% if current_month %}
    {% set topic = current_month %}
{% endif %}
{% if topic %}
    {% set base_url = base_url ~ 'topic/' ~ topic %}
{% endif %}
{% if blog_author %}
    {% set base_url = base_url ~ 'author/' ~ blog_author.slug %}
{% endif %}
{% if current_month %}
    {% set topic = current_month %}
{% endif %}


{% set month_labels = [
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
]%}

{% if is_listing_view %}

<div class="padded-section padded-section--half">
    <div class="events-listing">
        <div class="filters filters--blog">
            <h3 class="filters__title">Explore Events</h3>
            <div class="filters__controls">
                {% set current_month = request.query_dict.month %}
                {% if current_month or topic %}
                    <a href="{{ group.absolute_url }}" class="filters__item filters__item--clear">View All</a>
                {% endif %}
                <div class="filters__item filters__item--filter filters__item--filter--topics select-nav">
                    <span class="select-nav__label" title="Type">
                        Type
                    </span>
                    <div class="select-nav__options">
                        <a href="http://www.----.com/events/topic/webinar">Webinar</a>
                        <a href="http://www.----.com/events/topic/conference">Conference</a>
                    </div>
                </div>
                {% unless current_month or topic %}
                <div class="filters__item filters__item--filter filters__item--filter--topics select-nav">
                    <span class="select-nav__label" title="{{ topic_group.label_plural }}">
                        {% if current_month and month_labels[current_month] %}{{ current_month.label }}: {{ month_labels[current_month] }}{% else %}Months{% endif %}
                    </span>

                    <div class="select-nav__options">
                        {% for month in months %}
                            {% set year = month[0:4] %}
                            {% set month_value = month[4:6] %}
                            {% set month_index = month[4:6]|trim|int - 1 %}
                            {% set month_label = month_labels[month_index] %}
                            <a href="http://www.----.com/events/topic/{{ month_value }}{{ year }}">{{ month_label }} {{ year }}</a>
                        {% endfor %}
                    </div>
                </div>
                {% endunless %}
                {{ components.search_form('https://www.----.com/search', 'blog-search', current_search, 'filters__item filters__item--search', 'q') }}
            </div>
        </div>
        {% if events %}
            <div class="event-listing clearfix">
                {% for event in events %}
                    {% set post_id = event|split(':', 2)|last %}
                    {% set content = blog_post_by_id(post_id) %}
                    {% if simple_list_page or (loop.index > offset and loop.index <= offset + posts_per_page) %}
                        {{ components.event_thumbnail_blog_post(content) }}
                    {% endif %}
                {% endfor %}
            </div>
            <nav class="blog-listing__nav listing-nav">
                {% if page_number > 1 %}
                    <a href="{{ base_url }}{% if page_number > 2 %}?page={{ page_number - 1 }}{% endif %}" class="listing-nav__item listing-nav__item--prev">Previous</a>
                {% endif %}
                {% if simple_list_page or topic or blog_author %}
                    <a href="{{ group.absolute_url }}" class="listing-nav__item listing-nav__item--all">View Upcoming</a>
                {% else %}
                    <a href="{{ group.absolute_url }}/topic/past-events" class="listing-nav__item">View Past Events</a>
                {% endif %}
                {% endif %}
                {% if page_number < max_pages %}
                    <a href="{{ base_url }}?page={{ page_number + 1 }}" class="listing-nav__item listing-nav__item--next">Next</a>
                {% endif %}
            </nav>
        {% else %}
            <div class="events-listing__error">
                <p><em>Couldn't find any upcoming events!</em></p>
                {% if blog_author or topic %}
                    <p><a href="{{ group.absolute_url }}">View Upcoming</a></p>
                {% endif %}
            </div>
        {% endif %}
    {% endif %}
    </div>
</div>
{% endif %}
</div><!--end widget-span -->

1 Ответ

0 голосов
/ 07 мая 2018

Во-первых, это встроенный файл javaScript EJS , если это поможет вам перевести то, что там происходит. Во многом это похоже на настройку переменных и выпадающих меню.

Но в целом вы получаете информацию из базы данных через маршрут API. Например, блок, где вы можете найти другие посты от того же автора, проходит через GET-маршрут к yourSiteURL.com/author/edgar%20allen%20poe или с помощью запроса, например, yoursite.com/posts?tag='gothic', вы запрашиваете эти GET-маршруты и получаете данные обратно.

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

...