{"id":18513704,"url":"https://github.com/proklung/bitrixstaticpagemakerbundle","last_synced_at":"2025-08-29T02:37:28.345Z","repository":{"id":57045110,"uuid":"359552104","full_name":"ProklUng/BitrixStaticPageMakerBundle","owner":"ProklUng","description":"Бандл рендеринга статических страниц из роутов для связки Bitrix-Symfony","archived":false,"fork":false,"pushed_at":"2022-01-14T07:18:24.000Z","size":46,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-18T06:53:58.863Z","etag":null,"topics":["bitrix","bitrix-symfony","php7","symfony","symfony-bundle"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProklUng.png","metadata":{"files":{"readme":"readme.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-19T17:59:38.000Z","updated_at":"2022-02-12T13:38:16.000Z","dependencies_parsed_at":"2022-08-24T04:50:36.609Z","dependency_job_id":null,"html_url":"https://github.com/ProklUng/BitrixStaticPageMakerBundle","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/ProklUng/BitrixStaticPageMakerBundle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2FBitrixStaticPageMakerBundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2FBitrixStaticPageMakerBundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2FBitrixStaticPageMakerBundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2FBitrixStaticPageMakerBundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProklUng","download_url":"https://codeload.github.com/ProklUng/BitrixStaticPageMakerBundle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2FBitrixStaticPageMakerBundle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272612178,"owners_count":24964388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitrix","bitrix-symfony","php7","symfony","symfony-bundle"],"created_at":"2024-11-06T15:40:17.011Z","updated_at":"2025-08-29T02:37:28.311Z","avatar_url":"https://github.com/ProklUng.png","language":"PHP","readme":"# Бандл рендеринга статических страниц из роутов для связки Bitrix-Symfony\n\n#### Зачем?    \n\nНа практике использую его на проектах, где надо оградить те или иные статические страницы\nот возможности редактирования ручками контент-менеджеров через админку.\n\nТ.е. это частное решение весьма локальной задачи.\n\n#### Установка \n\n1) `composer require proklung/facade.bundle`\n\n2) Активировать бандл в bundles.php (или в случае кастомных использований Symfony - в standalone_bundles.php).\n\nВ качестве базы используется форкнутый класс Symfony\\Bundle\\FrameworkBundle\\Controller\\TemplateController\n\n### Описание роута (в файле типа routes.yaml)\n\n```yaml\nsimple_static_page:\n  path: /simple_page/\n  methods: [GET]\n  controller: 'Prokl\\StaticPageMakerBundle\\Services\\TemplateControllerContainerAware::templateAction'\n  defaults:\n    # Шаблон\n    template:  './static/example2.twig'\n    statusCode: 202 # HTTP Status = Accepted\n    # Контекст, передаваемый Твигу для рендеринга страницы.\n    context:\n      # Препроцессоры контекста.\n      _processors:\n        - '@Prokl\\StaticPageMakerBundle\\Services\\ContextProcessors\\ExampleContextProcessor'\n      options: '@app.options' # Сервис как параметр\n      site_name: 'Example site'\n      object: # Объект\n        errored: true\n        finished: true\n        pending: true\n      page_type: 'static-page' # Битриксовое свойство страницы page_type\n      title: 'Простая статическая страница'\n      description: 'Простая статическая страница'\n\n```\n\n### Нюансы\n\n1) Перед передачей данных в Твиг существует возможность пропустить данные через цепочку\n\"препроцессоров\", чтобы как-нибудь их автоматически изменить.\n    \n   Препроцессоры, уже имеющиеся в пакете:\n   \n    - **SeoContextProcessor** - установка title \u0026 description из мета-свойств элементов инфоблока.\n       ID (отдельного) инфоблока задается на уровне конфигурации бандла. Ключ в конфиге - seo_iblock_id.\n       По умолчанию равен null. \n       \n       Формат записи в \"SEO\" инфоблоке: NAME =\u003e url \"статической\" страницы. Параметры во вкладе SEO.\n       \n       Даже если эксплицитно указаны параметры title - description в роуте, то подключенный процессор\n       \"перебьет\" их значения (если найдет запись в инфоблоке).\n    \n       Препроцессор - класс, реализующий интерфейс ContextProcessorInterface с двумя методами setContext\n       (сеттер; чтобы не копипастить его каждый раз существует абстрактный класс AbstractContextProcessor) и\n       handle (где осуществляется вся работа). Метод должен вернуть измененный (или неизмененный) контекст.\n        \n       Чтобы препроцессор заработал он должен быть сервисом, помеченным тэгом static_page_maker.default.context.processor.\n        \n       Препроцессор пускается автоматически, если в конфиге бандла задан ID SEO инфоблока.\n    \n    - **BreadcrumbsContextProcessor**. Хлебные крошки.\n    \n       Предполагается, что битриксовый компонент подключается в шапке. Но не обязательно, вполне сработает конструкция\n        `{{ showComponent('bitrix:breadcrumbs', '') }}`  \n       \n       Этот препроцессор пускается последним. В качестве url использует адрес роута, а описание берет из поля title контекста. \n\n2) При установке опции set_last_modified_header равной true в конфигурации бандла (local/configs/packages/static_page_maker.yaml)\n   будут установлены заголовки LastModified. \n   \n   Пример конфига модуля лежит по адресу Examples/static_page_maker.yaml относительно корня бандла. \n \n3) В Твиг добавлены две кастомные функции: header и footer, отвечающие за вывод битриксовой шапки и футера. \n\n   А также функции add_css, add_js и add_string, являющиеся оберткой над соответствующими методами класса Asset.\n         \n4) Пример шаблона:   \n\n    Базовый (для копипасты лежит в vendor\\ProklUng\\StaticPageMakerBundle\\Examples\\templates\\static\\template\\baseTemplate.twig):\n    \n    ```twig\n    {# head #}\n    {% block header %}\n        {{ header() }}\n    \n        {{ APPLICATION.SetTitle(title) }}\n        {{ APPLICATION.SetPageProperty('description', description) }}\n        {{ APPLICATION.SetPageProperty('page_type', page_type) }}\n    \n    {% endblock %}\n    \n    {# content #}\n    {% block content %}\n    \n    {% endblock %}\n    \n    {# footer #}\n    {% block footer %}\n        {{ footer() }}\n    {% endblock %} \n   ```      \n   \n   Конкретная страница:\n   \n       ```twig\n        {% extends \"./static/template/baseTemplate.twig\" %}\n        \n        {# content #}\n        {% block content %}\n            {{ add_css('/assets/examples/style.css') }}\n        \n            {% apply inline_css %}\n                \u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n                \u003ch1\u003eЯ статическая страница\u003c/h1\u003e\n                {{ dump (options) }}\n                \u003cdiv class=\"test\"\u003e\n                    Мои параметры: {{ site_name }}\n                \u003c/div\u003e\n        \n                \u003cdiv class=\"test_class\"\u003eText\u003c/div\u003e\n        \n                \u003cstyle\u003e\n                    .test {\n                        color: red;\n                    }\n                    .errored {color: rosybrown}\n                \u003c/style\u003e\n        \n                {{ encore_entry_link_tags('main') }}\n        \n                \u003cdiv class=\"home-philosophy my-3 my-md-4 my-lg-5 my-xl-10\"\u003e\n                    {{ showComponent('guta:example', '') }}\n                    {{ url('foo_route') }}\n                \u003c/div\u003e\n               {% endapply %}\n        {% endblock %}\n      ```  \n   5) Сами шаблоны ищутся согласно зарегистрированным в Твиге путям. В моем случае - в local/twig.\n\n   6) В Твиг подтягиваются все зарегистрированные в системе функции и фильтры.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproklung%2Fbitrixstaticpagemakerbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproklung%2Fbitrixstaticpagemakerbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproklung%2Fbitrixstaticpagemakerbundle/lists"}