Skip to content

Instantly share code, notes, and snippets.

@vmrfriz
Last active April 28, 2021 04:37
Show Gist options
  • Save vmrfriz/1c8fdaea85858db505ec4aa51c02b214 to your computer and use it in GitHub Desktop.
Save vmrfriz/1c8fdaea85858db505ec4aa51c02b214 to your computer and use it in GitHub Desktop.
meblikey.com.ua

Настройка

Доступы

Конфиги

  • system/conf.php
    • доступы к БД
    • URL сайта для генерации ссылок
  • modules/{module_name}/Configuration.php
    • конфигурация модуля
  • system/controllers/StaticMethodsController.php
    • роутер (путь => контроллер)

Переводы

  • Переводы хранятся в папке Locale. Чтобы перевести текст в шаблоне .tpl (Smarty), нужно обернуть это в тег {t}Переводимый текст{/t}. Чтобы перевести текст PHP, нужно вызвать функцию _('Переводимый текст').

Механика

Авторизация

Класс авторизации описан в файле /system/auth.php

Порядок autoload

index.php: require system/core.php и Core->run()

Core->init()

- установка временной зоны - установка кодировки скрипта - регистрация автолоадера классов coreAutoload - старт сессии

Загрузка всех модулей из папки MODULES_DIR (modules/) методом Core->buildModulesArray()

загрузка модулей Core->buildModulesArray(), а именно, формирование массива модулей, каждый из которых содержит следующие ключи: - title string Пользователи - in_admin bool true - url string users - icon string fa-users - order int 1 - routes array - actions array

- проверка авторизации

- включение вывода raw, если передан ajax=true - очистка кэша Smarty в случае включенного дебага

Core->getRequestUri()

установка языка перевода и локали, возврат ссылки без части /{lang}

... инициализация вызываемого модуля Core->exec($module, $action, $params)

$module->$action($params)

Вызов шаблона Smarty: $this->getSmarty()->fetch()

  1. libs/{class}.php - modules/{class}/{class}.php
    где modules - значение константы MODULES_DIR из файла /system/conf.php - system/controllers/{class}.php - system/abstract/{class}.php

Разработка

Компиляция .tpl, .scss

  • каждый конкретный шаблон smarty компилируются при обновлении исходного .tpl файла, далее работает как кэш. Если новая компиляция прошла с ошибками, в работе остаётся старый кэш
  • scss компилируется только при константе DEBUG=true в файле system/conf.php, при обращении к странице пользователя с логином admin_debug и при наличии в вызове функции smarty_function_getcss($params) ключа $params['rebuild'] со значением true

Отладка

Отладка включается константой DEBUG в файле system/conf.php. В режиме отладки происходит следующее:

  • сброс кэша Smarty Smarty::clearAllCache()

Кроме того, без константы, можно включить отображение областей .tpl шаблонов, добавив в адрес страницы ?debug=template

Модули

Модули автоматически подключаются при инициализации ядра.

  • автоматически подключаются все модули modules/{class}/{class}.php, где {class} - название модуля
  • если существует /modules/{class}/Configuration.php, то он загружается первым

Core->$_modules =

[
    "Banner" => [
        "routes" => '',
        "actions": [
            "admin_show_content_form": []
        ]
    ],
    "Catalog": [],
    "Content": [
        'title' => self::$_conf['title'],
        'in_admin' => self::$_conf['in_admin'],
        'url' => self::$_conf['url'],
        'icon' => self::$_conf['icon'],
        'order' => self::$_conf['order']
        "routes":,
        "actions": {
            "admin_show_content_form": {
                "title" => "Создать котент"
            ]
        ]
    ],
    ...
]

Ссылки --> Код

  • Корзина /catalog/order/details/
    • Контроллер: system/controllers/CatalogController.php -> showOrderDetailsForm
    • Шаблон: modules/Catalog/templates/show_order_details_form.tpl
    • Конфиг: modules/Catalog/Configuration.php -> basket['order']['fields']
  • Оплата /catalog/order/payment/
    • Контроллер: system/controllers/CatalogController.php -> showOrderPayment
    • Шаблон: templates/module/show_order_payment.tpl
    • Класс LiqPay: libs/LiqPay.php
    • Конфиг: modules/Catalog/Configuration.php -> basket['payment_keys']['liqpay']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment