feat(main): Make FAQ and slide entities translatable

This commit is contained in:
2026-09-09 13:17:58 +02:00
parent 7cafc376b7
commit 4e7333493a
11 changed files with 358 additions and 62 deletions
+12 -12
View File
@@ -71,9 +71,9 @@ trait DisplayHooks
}
$blocksByGroup = CustomHtmlBlock::getActiveByGroupIds(array_column($groups, 'id_ws_customhtml_group'), $idLang);
$blocksByGroup = $this->attachFaqsToBlocks($blocksByGroup);
$blocksByGroup = $this->attachFaqsToBlocks($blocksByGroup, $idLang);
$blocksByGroup = $this->attachImageUrls($blocksByGroup);
$blocksByGroup = $this->attachSlidesToBlocks($blocksByGroup);
$blocksByGroup = $this->attachSlidesToBlocks($blocksByGroup, $idLang);
$groups = array_map(static function (array $group) use ($blocksByGroup) {
$group['blocks'] = $blocksByGroup[(int) $group['id_ws_customhtml_group']] ?? [];
@@ -86,12 +86,12 @@ trait DisplayHooks
}));
}
private function attachFaqsToBlocks(array $blocksByGroup): array
private function attachFaqsToBlocks(array $blocksByGroup, int $idLang): array
{
return array_map(static function (array $blocks) {
return array_map(static function (array $block) {
return array_map(static function (array $blocks) use ($idLang) {
return array_map(static function (array $block) use ($idLang) {
if ($block['type'] === 'faq') {
$block['faqs'] = CustomHtmlFaq::getByBlockId((int) $block['id_ws_customhtml']);
$block['faqs'] = CustomHtmlFaq::getByBlockIdForLang((int) $block['id_ws_customhtml'], $idLang);
}
return $block;
@@ -112,12 +112,12 @@ trait DisplayHooks
}, $blocksByGroup);
}
private function attachSlidesToBlocks(array $blocksByGroup): array
private function attachSlidesToBlocks(array $blocksByGroup, int $idLang): array
{
return array_map(function (array $blocks) {
return array_map(function (array $block) {
return array_map(function (array $blocks) use ($idLang) {
return array_map(function (array $block) use ($idLang) {
if ($block['type'] === 'slider') {
$block['slides'] = $this->loadSlidesForBlock((int) $block['id_ws_customhtml']);
$block['slides'] = $this->loadSlidesForBlock((int) $block['id_ws_customhtml'], $idLang);
$block['slider_config'] = $this->buildSliderConfig($block);
$block['slider_desktop_column_width'] = $this->buildSliderDesktopColumnWidth($block);
}
@@ -127,14 +127,14 @@ trait DisplayHooks
}, $blocksByGroup);
}
private function loadSlidesForBlock(int $idBlock): array
private function loadSlidesForBlock(int $idBlock, int $idLang): array
{
return array_map(static function (array $slide) {
$slide['image_url'] = CustomHtmlBlock::getBannerImageUrl($slide['image']);
$slide['show_title'] = true;
return $slide;
}, CustomHtmlSlide::getByBlockId($idBlock));
}, CustomHtmlSlide::getByBlockIdForLang($idBlock, $idLang));
}
private function buildSliderConfig(array $block): string