Разработка кастомной темы October CMS

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка кастомной темы October CMS
Средняя
~5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка кастомной темы October CMS

Темы October CMS — это набор .htm-файлов с PHP/Twig-разметкой. Каждый файл содержит ini-секцию с метаданными, PHP-код компонентов и HTML-шаблон. Вёрстка полностью под контролем разработчика.

Структура темы

themes/mytheme/
├── theme.yaml          # метаданные темы
├── layouts/
│   ├── default.htm     # базовый layout
│   └── minimal.htm     # для LP
├── pages/
│   ├── index.htm       # главная страница
│   ├── about.htm
│   ├── blog.htm
│   └── blog-post.htm
├── partials/
│   ├── header.htm
│   ├── footer.htm
│   ├── nav.htm
│   ├── blog/
│   │   ├── post-card.htm
│   │   └── post-list.htm
│   └── forms/
│       └── contact.htm
└── assets/
    ├── css/
    ├── js/
    └── images/
# theme.yaml
name: My Theme
description: Corporate theme for My Site
author: My Company
homepage: https://mycompany.com
code: mytheme

form:
  fields:
    primary_color:
      label: Primary Color
      type: colorpicker
      default: '#1a56db'
    logo:
      label: Site Logo
      type: mediafinder
      mode: image

Layout файл

description = "Default Layout"
==
<!DOCTYPE html>
<html lang="{{ this.site.locale ?? 'ru' }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>
        {% if this.page.meta_title %}
            {{ this.page.meta_title }} | {{ this.site.name }}
        {% else %}
            {{ this.page.title }} | {{ this.site.name }}
        {% endif %}
    </title>
    <meta name="description" content="{{ this.page.meta_description }}">
    {% styles %}
    <link rel="stylesheet" href="{{ 'assets/css/app.css' | theme }}">
</head>
<body class="{{ this.page.layout_class }}">
    {% partial 'header' %}

    <main id="main">
        {% page %}
    </main>

    {% partial 'footer' %}

    {% scripts %}
    <script src="{{ 'assets/js/app.js' | theme }}" defer></script>
</body>
</html>

Страница с компонентами

title = "Блог"
url = "/blog/:page?"
layout = "default"
is_hidden = 0

[blogPosts]
postsPerPage = 12
sortOrder = "published_at desc"

[blogCategories]
slug = "{{ :slug }}"
==
{% set currentPage = this.param.page ?? 1 %}

<section class="blog-header">
    <h1>{{ this.page.title }}</h1>
</section>

<section class="blog-content">
    <div class="posts-grid">
        {% for post in blogPosts %}
            {% partial 'blog/post-card' post=post %}
        {% endfor %}
    </div>

    <aside class="sidebar">
        <h3>Категории</h3>
        <ul>
            {% for cat in blogCategories %}
                <li><a href="{{ cat.url }}">{{ cat.name }} ({{ cat.posts_count }})</a></li>
            {% endfor %}
        </ul>
    </aside>
</section>

Интеграция с Vite

npm install vite laravel-vite-plugin
// vite.config.ts
import { defineConfig } from 'vite';
import { octobercmsTheme } from 'vite-plugin-october-cms-theme';

export default defineConfig({
  plugins: [
    octobercmsTheme({ themePath: 'themes/mytheme' }),
  ],
  build: {
    outDir: 'themes/mytheme/assets/build',
    manifest: true,
  },
});

Настройки темы в шаблоне

Поля из theme.yaml доступны через this.theme:

<style>
  :root {
    --color-primary: {{ this.theme.primary_color ?? '#1a56db' }};
  }
</style>

{% if this.theme.logo %}
  <img src="{{ this.theme.logo }}" alt="{{ site.name }}">
{% else %}
  <span class="text-logo">{{ site.name }}</span>
{% endif %}

Разработка темы корпоративного сайта — 5–10 рабочих дней.