Блок KPI (также называемый строкой KPI) отображается следующим образом:
Вы можете следовать этим шагам, чтобы легко добавить строку KPI на современную страницу:
Определите ваши классы KPI
- Вы можете использовать один из существующих классов KPI из пространства имен
PrestaShop\PrestaShop\Adapter\Kpi
. - Вы можете создать новые классы - они должны реализовывать
PrestaShop\PrestaShop\Core\Kpi\KpiInterface
.
Определите службу фабрики строки KPI в src/PrestaShopBundle/Resources/config/services/core/kpi.yml
Пример с страницы переводов:
prestashop.core.kpi_row.factory.translations_page:
class: PrestaShop\PrestaShop\Core\Kpi\Row\KpiRowFactory
arguments:
- '@prestashop.adapter.kpi.enabled_languages'
- '@prestashop.adapter.kpi.main_country'
- '@prestashop.adapter.kpi.translations'
Фабрика строки KPI принимает неограниченное количество аргументов, каждый аргумент является KPI, который будет встроен в строку KPI.
Создание строки KPI в действии контроллера и назначение её Twig
<?php
public function showSettingsAction(Request $request)
{
// Создание службы фабрики строки KPI
$kpiRowFactory = $this->get('prestashop.core.kpi_row.factory.your_page');
return [
// Назначение созданной строки KPI для отображения
'kpiRow' => $kpiRowFactory->build(),
...
];
}
Отображение строки KPI с помощью Twig
Используйте метод renderKpiRow
из CommonController
, передав ему ранее назначенную переменную kpiRow
:
{# Это также работает в контроллерах модуля Admin #}
{% block translations_kpis_row %}
{{ render(controller(
'PrestaShopBundle:Admin\\Common:renderKpiRow',
{ 'kpiRow': kpiRow }
)) }}
{% endblock %}
Изменение существующей строки KPI
Хук позволяет изменять список существующей строки KPI в панели администрирования.
Этот хук динамичен и вызывается после *идентификатора строки KPI*.
Например, для строки KPI с идентификатором "foo":
<?php
// мы находимся в модуле
public function hookActionFooKpiRowModifier(array $params)
{
var_dump($params['kpis']); // доступ к полному списку
unset($params['kpis'][0]); // удаление первого элемента
$params['kpis'][] = new YourOwnKpi(...);
}