Как лучше всего настроить конкретную конфигурацию сайта в многосайтовой установке TYPO3? - PullRequest
1 голос
/ 25 марта 2019

У нас есть установка TYPO3 9.5 с кучей разных веб-сайтов.

Мы хотим сохранить несколько пользовательских конфигураций для каждого сайта (например, показать номер телефона в нижнем колонтитуле да / нет и что-то вроде этого)и дайте редакторам возможность изменить это простым способом в бэкэнде.

Было бы неплохо, если бы мы могли хранить эти свойства на корневой странице каждого сайта, но иметь возможность перезаписывать (некоторые) свойства на subстраницы, если необходимо.

Аналогично свойствам страницы, которые предоставляет Fluidtypo3 / flux.

Есть ли возможность добиться этого с ядром TYPO3 и пользовательским расширением?Например.путем расширения таблицы страниц или добавления пользовательской таблицы?

1 Ответ

2 голосов
/ 25 марта 2019

Необходимо отличать конфигурацию сайта от обычных страниц!

  • Конфигурация сайта действительна для полного сайта, поэтому для каждой страницы
  • Страница может отличаться на уровне страницы

Оба варианта использования действительны, поэтому давайте объясним подробно


Расширение конфигурации сайта

Конфигурацию сайта можно легко расширить, создав файл <site-extension>/Configuration/SiteConfiguration/Overrides/sites.php

<?php
defined('TYPO3_MODE') || die('Access denied.');

call_user_func(
    function ($table) {
        $GLOBALS['SiteConfiguration'][$table]['columns']['trackingCode'] = [
            'label' => 'Label',
            'config' => [
                'type' => 'input',
                'eval' => 'trim',
                'placeholder' => 'GTM-123456',
            ],
        ];

        $GLOBALS['SiteConfiguration'][$table]['types']['0']['showitem'] .= ',--div--;Extra,trackingCode';
    },
    'site'
);

Значение нового поля trackingCode может быть легко получено, например, по TS с data = site:trackingCode. В качестве альтернативы вы также можете использовать SiteProcessor, чтобы получить доступ к конфигурации сайта в FLUIDTEMPLATE.

Расширение страниц

Создать файл <site-extension>/Configuration/TCA/Overrides/pages.php

<?php

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'pages',
    [
        'trackingCode' => [
            'exclude' => true,
            'label' => 'A label',
            'config' => [
                'type' => 'input',
            ]
        ],
    ]
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
    'pages',
    '--div--;Extra, trackingCode'
);

и `ext_tables.sql``

CREATE TABLE pages (
    trackingCode text NOT NULL
);

и вы получаете доступ к полю с TypoScript и внутри FLUIDTEMPLATE с {data.trackingCode}.

Использование слайда

Путем добавления trackingCode в список через запятую в [FE][addRootLineFields] (используйте Установочный инструмент> Настройки> Конфигурировать параметры для всей установки, можно переопределить значение для всех подстраниц.

Следующий TypoScript восстановит корневую линию и вернет первый набор значений.

lib.code = TEXT
lib.code.data = levelfield:-1,trackingCode, slide
...