HTML-отчёты в TopSite 3

В TopSite 3 по сравнению со 2-й версией программы изменён механизм формирования отчётов. Генератор пока реализован не весь. Размещаем рабочий вариант инструкции по используемым блокам и переменным.

Кодировка файла - UTF-8, переносы строки не важны
Настройки шаблона.
Хранятся в файле template_settings.ini в корневом каталоге шаблона. Если файла нет, используются настройки по умолчанию. Файл не копируется в результирующую папку.
Формат файла настроек (если настройка по-умолчанию, то её значение можно не вписывать):
[template_settings]
template_regexp=.+\.html        - Регулярное выражение для файлов, в которых производятся замены. Остальные файлы копируются как есть.
static_regexp=.+shared(\\.+)?    - Регулярное выражение для файлов и папок, которые не будут каждый раз копироваться в подпапки при выгрузке подгруппы.
subgroups_in_subdirs=1            - Для каждой подгруппы создаётся отдельная подпапка, в которую копируются все файлы из папки шаблона исключая те, что указаны в static_regexp.
start_marker_begin=<!--            - Начальный маркер начала блока (значение по умолчанию с пробелом на конце).
start_marker_end= -->            - Конечный маркер начала блока.
finish_marker_begin=<!-- /        - Начальный маркер окончания блока.
finish_marker_end= -->            - Конечный маркер окончания блока.
extension_delimiter=             - Разделитель имени и расширения блока, если оно есть (значение по умолчанию - пробел).
variable_begin=%                - Маркер начала переменной
variable_end=%                    - Маркер окончания переменной
images_folder=images            - Папка, в которую будут складываться изображения, сгенерированные программой (для каждой подгруппы своя, уже должна быть создана)
images_width=700                - Ширина создаваемых программой изображений
images_height=400                - Высота создаваемых программой изображений
browser_open_file=index.html    - Имя файла для открытия в браузере после формирования отчёта
Блоки.
В HTML-коде блоки выглядят так (при условии дефолтных маркеров):
<!-- name_of_block -->
HTML-код
<!-- /name_of_block -->
Имя блока помещается между соответствующими маркерами. Расширение имени отделяется от имени блока разделителем extension_delimiter (по умолчанию - пробел).
Переменная выглядит так: %variable_name% (имя переменной заключено между двумя маркерами переменной, по умолчанию - %).
Если блок в программе отключен, весь кусок (начиная с первого "<!--" и заканчивая последним "-->") вырезается.
Если в коде нужно сделать вывод данных этого блока в разных местах, то можно создать несколько дополнительных блоков в таком формате:
<!-- name_of_block ext -->
HTML-код
<!-- /name_of_block ext -->
Где "ext" - любой дополнительный уникальный идентификатор (через пробел).
Блоки не должны повторяться. Нельзя добавлять в код два блока с одинаковым именем. Это привело бы к неверной замене. Поэтому нужны дополнительные "ext".
Если программа находит два или более блока с одинаковым именем, она считает это ошибкой.
Если всё нормально, программа работает с этим блоком, делая в нём замены, а в конце заменяет его, вырезая маркеры.
Есть два режима работы. Первый - создание для каждой подгруппы подпапки в отчёте с копированием шаблона. Второй - вывод данных подгрупп в те же файлы.
Во втором случае все последующие переменные и блоки должны быть обёрнуты в конструкцию списка групп:
<!-- groups_repeat -->
...
<!-- /groups_repeat -->
Блок основной информации группы:
%project_name% - Имя корневой группы отчета
%group_name% - Имя группы
%group_key% - Идентификатор группы
%group_key_link% - Относительный путь из ключей от корневой группы с разделителем "/"
%group_key_path% - Относительный путь из ключей от корневой группы с разделителем, зависящим от операционной системы
%group_subgroups_count% - Количество непосредственных подгрупп
%root_group_relative_link% - Относительный путь от текущей группы к родительской с разделителем "/"
%root_group_relative_path% - Относительный путь от текущей группы к родительской с разделителем, зависящим от операционной системы
Список родительских групп:
<!-- parent_groups_repeat -->
    %parent_group_name%
    %parent_group_key%
    %parent_group_key_link%
    %parent_group_key_path%
    %parent_group_relative_link% - Относительный путь от текущей группы к родительской с разделителем "/"
    %parent_group_relative_path% - Относительный путь от текущей группы к родительской с разделителем, зависящим от операционной системы
<!-- /parent_groups_repeat -->
Список непосредственных подгрупп:
<!-- subgroups_repeat -->
    %subgroup_name%
    %subgroup_key%
    %subgroup_key_link%
    %subgroup_key_path%
    %subgroup_relative_link%
    %subgroup_relative_path%
<!-- /subgroups_repeat -->
Блок стандартного вида:
<!-- standard_view_block -->
    Подблок - таблица:
    <!-- table_block -->
        %table_headers% - Число столбцов в таблице
        %table_size% - Число строк в таблице
        %table_output_size% - Число строк таблицы, выведенное в отчет
        Заголовки столбцов таблицы:
        <!-- table_headers_repeat -->
            %header_name% - Название столбца
            %header_part_id% - Число, идентифицирующее ту часть данных, которую отображает столбец
        <!-- /table_headers_repeat -->
        Сама таблица (строки и ячейки):
        <!-- table_rows_repeat -->
            <!-- table_row_cells_repeat -->
                Переключатель типа данных ячейки (выводится один из них, остальные удаляются):
                <!-- table_cell_keyword_switch -->
                    %keyword% - Ключевое слово
                    Переключатель в зависимости от part_id:
                    <!-- table_header_part_id_0_switch -->
                        Вывод всех данных
                    <!-- /table_header_part_id_0_switch -->
                    <!-- table_header_part_id_1_switch -->
                        Вывод только ключевого слова
                    <!-- /table_header_part_id_1_switch -->
                <!-- /table_cell_keyword_switch -->
                <!-- table_cell_engine_switch -->
                    %checking_state% - Статус проверки
                    %checking_state_text% - Статус проверки (текстом)
                    %error% - Код ошибки (0 - без ошибок)
                    %error_text% - Сообщение об ошибке (текстом или пусто, если без ошибок)
                    %time% - Дата/время полученя данных проверки
                    Переключатель в зависимости от part_id:
                    <!-- table_header_part_id_0_switch -->
                        Вывод всех данных
                    <!-- /table_header_part_id_0_switch -->
                    <!-- table_header_part_id_1_switch -->
                        Вывод только статуса проверки
                    <!-- /table_header_part_id_1_switch -->
                    <!-- table_header_part_id_2_switch -->
                        Вывод только кода ошибки
                    <!-- /table_header_part_id_2_switch -->
                    <!-- table_header_part_id_3_switch -->
                        Вывод только даты/времени проверки
                    <!-- /table_header_part_id_3_switch -->
                <!-- /table_cell_engine_switch -->
                <!-- table_cell_wordstat_switch -->
                    Доступны все переменные из table_cell_engine_switch и дополнительно:
                    %frequency% - Частотность
                    %frequency_cmp% - Частотность для сравнения
                    %frequency_dynamics% - Изменение частотности (число, начинающееся с +/- или пусто, если изменений нет)
                    %frequency_dynamics_class% - HTML-класс (plus, minus или пусто, если изменений нет)
                    Переключатели в зависимости от part_id, как и в table_cell_engine_switch и дополнительно:
                    <!-- table_header_part_id_32_switch -->
                        Вывод только частотности
                    <!-- /table_header_part_id_32_switch -->
                <!-- /table_cell_wordstat_switch -->
                <!-- table_cell_searchengine_switch -->
                    Доступны все переменные из table_cell_engine_switch и дополнительно:
                    %snippet_title% - Заголовок сниппета
                    %snippet_title_cmp% - Заголовок сниппета для сравнения
                    %snippet_title_dynamics_class% - HTML-класс (changed или пусто, если изменений нет)
                    %snippet_description% - Описание сниппета
                    %snippet_description_cmp% - Описание сниппета для сравнения
                    %snippet_description_dynamics_class% - HTML-класс (changed или пусто, если изменений нет)
                    %relevant_page% - Релевантная страница
                    %relevant_page_cmp% - Релевантная страница для сравнения
                    %relevant_page_dynamics_class% - HTML-класс (changed или пусто, если изменений нет)
                    %relevant_page_target_class% - HTML-класс целевой страницы (rptarget, если страница является целевой или rp, если нет)
                    %position% - Позиция (пусто, если не проверялось; "—", если не найдено)
                    %position_cmp% - Позиция для сравнения (пусто, если не проверялось; "—", если не найдено)
                    %position_dynamics% - Изменение позиции (число, начинающееся с +/- или +∞/-∞, или пусто, если изменений нет)
                    %position_dynamics_class% - HTML-класс (plus, minus или пусто, если изменений нет)
                    %position_top_class% - HTML-класс в зависимости от топа (top3, top5, top10, top20, top50, top100 или пусто)
                    %infected% - Информация о пометке "инфицирован"
                    %infected_cmp% - Информация о пометке "инфицирован" для сравнения
                    %infected_dynamics_class% - HTML-класс (changed или пусто, если изменений нет)
                    %cluster% - Номер кластера или пусто, если не присвоен
                    Дополнительный подблок с графиком позиций для этой ячейки (доступен также и в производных подблоках):
                    <!-- table_cell_searchengine_graph_block -->
                        %image_id% - Уникальный идентификатор изображения
                        %filename% - Имя сгенерированного в соответствии с настройками файла изображения
                    <!-- /table_cell_searchengine_graph_block -->
                    Переключатели в зависимости от part_id, как и в table_cell_engine_switch и дополнительно:
                    <!-- table_header_part_id_32_switch -->
                        Вывод только заголовка сниппета
                    <!-- /table_header_part_id_32_switch -->
                    <!-- table_header_part_id_33_switch -->
                        Вывод только описания сниппета
                    <!-- /table_header_part_id_33_switch -->
                    <!-- table_header_part_id_34_switch -->
                        Вывод только релевантной страницы
                    <!-- /table_header_part_id_34_switch -->
                    <!-- table_header_part_id_35_switch -->
                        Вывод только позиции
                    <!-- /table_header_part_id_35_switch -->
                    <!-- table_header_part_id_36_switch -->
                        Вывод только флага "инфицирован"
                    <!-- /table_header_part_id_36_switch -->
                    <!-- table_header_part_id_37_switch -->
                        Вывод только номера кластера
                    <!-- /table_header_part_id_37_switch -->
                <!-- /table_cell_searchengine_switch -->
                <!-- table_cell_yandex_switch -->
                    Доступны все переменные из table_cell_searchengine_switch и дополнительно:
                    %from_xml% - Информация об источнике данных (Яндекс или Яндекс XML или пусто, если данные не получены)
                    %from_xml_cmp% - Информация об источнике данных для сравнения
                    %from_xml_dynamics_class% - HTML-класс (changed или пусто, если изменений нет)
                    %yandex_direct_position% - Позиция сайта в Директе (или "—", если не найдено, или пусто, если данные не получены)
                    %yandex_direct_pos% - Короткий вариант позиции в Директе (или пусто, если не найдено)
                    %yandex_direct_position_cmp% - Позиция сайта в Директе для сравнения (или "—", если не найдено, или пусто, если данные не получены)
                    %yandex_direct_pos_cmp% - Короткий вариант позиции в Директе для сравнения (или пусто, если не найдено)
                    %yandex_direct_position_dynamics_class% - HTML-класс (plus, minus или пусто, если изменений нет)
                    Переключатели в зависимости от part_id, как и в table_cell_searchengine_switch и дополнительно:
                    <!-- table_header_part_id_64_switch -->
                        Вывод только источника данных
                    <!-- /table_header_part_id_64_switch -->
                    <!-- table_header_part_id_65_switch -->
                        Вывод только позиции в Яндекс Директ
                    <!-- /table_header_part_id_65_switch -->
                <!-- /table_cell_yandex_switch -->
                <!-- table_cell_google_switch -->
                    Доступны все переменные из table_cell_searchengine_switch и дополнительно:
                    %google_ads_position% - Позиция сайта в Google Рекламе (или "—", если не найдено, или пусто, если данные не получены)
                    %google_ads_pos% - Короткий вариант позиции в Google Рекламе (или пусто, если не найдено)
                    %google_ads_position_cmp% - Позиция сайта в Google Рекламе для сравнения (или "—", если не найдено, или пусто, если данные не получены)
                    %google_ads_pos_cmp% - Короткий вариант позиции в Google Рекламе для сравнения (или пусто, если не найдено)
                    %google_ads_position_dynamics_class% - HTML-класс (plus, minus или пусто, если изменений нет)
                    Переключатели в зависимости от part_id, как и в table_cell_searchengine_switch и дополнительно:
                    <!-- table_header_part_id_64_switch -->
                        Вывод только позиции в Google Рекламе
                    <!-- /table_header_part_id_64_switch -->
                <!-- /table_cell_google_switch -->
                <!-- table_cell_mail_switch -->
                    Доступны все переменные из table_cell_searchengine_switch
                    Переключатели в зависимости от part_id, как и в table_cell_searchengine_switch
                <!-- /table_cell_mail_switch -->
            <!-- /table_row_cells_repeat -->
        <!-- /table_rows_repeat -->
    <!-- /table_block -->
    Подблок - таблица "Топы":
    <!-- tops_block -->
        %tops_headers% - Число столбцов в таблице (исключая столбец с названием Топа)
        Заголовки столбцов таблицы:
        <!-- tops_headers_repeat -->
            %header_name% - Название столбца
        <!-- /tops_headers_repeat -->
        Сама таблица (строки и ячейки):
        <!-- tops_rows_repeat -->
            %top% - Название Топа для строки
            <!-- tops_row_cells_repeat -->
                %count% - Количество запросов, находящихся в этом Топе
                %count_of% - Общее количество запросов
                %percent% - Процент запросов в Топе (или пусто, если вычислить нельзя)
                %count_cmp% - Количество запросов, находящихся в этом Топе для сравнения
                %count_of_cmp% - Общее количество запросов для сравнения
                %percent_cmp% - Процент запросов в Топе для сравнения (или пусто, если вычислить нельзя)
                %percent_dynamics% - Изменение процента (число, начинающееся с +/- или пусто, если изменений нет)
                %percent_dynamics_class% - HTML-класс (plus, minus или пусто, если изменений нет)
            <!-- /tops_row_cells_repeat -->
        <!-- /tops_rows_repeat -->
    <!-- /tops_block -->
    Подблок - таблица "Релевантные страницы":
    <!-- relevant_pages_block -->
        %relevant_pages_headers% - Число столбцов в таблице (исключая столбец с URL релевантной страницы)
        %relevant_pages_size% - Число строк в таблице
        Заголовки столбцов таблицы:
        <!-- relevant_pages_headers_repeat -->
            %header_name% - Название столбца
        <!-- /relevant_pages_headers_repeat -->
        Сама таблица (строки и ячейки):
        <!-- relevant_pages_rows_repeat -->
            %relevant_page% - URL релевантной страницы
            <!-- relevant_pages_row_cells_repeat -->
                %percent% - Процент видимости релевантной страницы (или "—", если страница не встречалась)
                %percent_cmp% - Процент видимости релевантной страницы для сравнения (или "—", если страница не встречалась)
                %percent_dynamics% - Изменение процента видимости (число, начинающееся с +/- или пусто, если изменений нет)
                %percent_dynamics_class% - HTML-класс (plus, minus или пусто, если изменений нет)
            <!-- /relevant_pages_row_cells_repeat -->
        <!-- /relevant_pages_rows_repeat -->
    <!-- /relevant_pages_block -->
    Подблок - таблица "Показатели":
    <!-- rates_block -->
        %rates_headers% - Число столбцов в таблице (исключая столбец с названием показателя)
        Заголовки столбцов таблицы:
        <!-- rates_headers_repeat -->
            %header_name% - Название столбца
        <!-- /rates_headers_repeat -->
        Сама таблица (строки и ячейки):
        <!-- rates_rows_repeat -->
            %rate% - Название показателя для строки
            <!-- rates_row_cells_repeat -->
                В каждой ячейке таблицы может быть несколько значений-параметров показателя (выводятся через пробел и имеют класс для подсветки динамики):
                <!-- rates_values_repeat -->
                    %value% - Значение показателя
                    %value_dynamics_class% - HTML-класс подсветки динамики (plus, minus или пусто, если подсветка не требуется)
                <!-- /rates_values_repeat -->
            <!-- /rates_row_cells_repeat -->
        <!-- /rates_rows_repeat -->
    <!-- /rates_block -->
    Подблок - таблица "Конкуренты":
    <!-- competitors_block -->
        %competitors_headers% - Число столбцов в таблице
        %competitors_output_size% - Число доменов конкурентов, выведенное в отчет
        Заголовки столбцов таблицы:
        <!-- competitors_headers_repeat -->
            %header_name% - Название столбца
        <!-- /competitors_headers_repeat -->
        Сама таблица (строки и ячейки):
        <!-- competitors_rows_repeat -->
            <!-- competitors_row_cells_repeat -->
                %domain% - Домен сайта конкурента
                %my_domain_class% - HTML-класс для пометки "своих" доменов (mydomain или пусто, если домен не свой)
                %pos_dynamics% - Динамика позиции домена конкурента в списке (число, начинающееся с +/- или пусто, если изменений нет)
                %pos_dynamics_class% - HTML-класс подсветки динамики (plus, minus или пусто, если подсветка не требуется)
                %domain_percent% - Процент видимости для всего домена (суммарно всех урлов)
                В каждой ячейке таблицы может быть несколько URL для текущего домена конкурента:
                <!-- competitor_domain_urls_repeat -->
                    %url% - URL страницы сайта конкурента
                    %relative_url% - URL с отрезанным доменом, начинающийся с "/"
                    %url_percent% - Процент видимости для этого URL
                <!-- /competitor_domain_urls_repeat -->
            <!-- /competitors_row_cells_repeat -->
        <!-- /competitors_rows_repeat -->
    <!-- /competitors_block -->
<!-- /standard_view_block -->

 

Статья отредактирована: 01 нояб. 2018 г.
Поделиться с друзьями
Статья опубликована
22 окт. 2018 г.