TYPO3 - optymalizacja pracy z instancjami

44
Optymalizacja pracy z instancjami local / staging / production Krystian Szymukowicz ([email protected])

Transcript of TYPO3 - optymalizacja pracy z instancjami

Page 1: TYPO3 - optymalizacja pracy z instancjami

Optymalizacja pracy z instancjami

local / staging / production

Krystian Szymukowicz ([email protected])

Page 2: TYPO3 - optymalizacja pracy z instancjami

Jakich potrzebujemy?Czym mogą się różnić między sobą?

INSTANCJE APLIKACJI

Page 3: TYPO3 - optymalizacja pracy z instancjami

Z czym się zmierzymy?

Production(current)

ProductionBackup

ProductionReplication

Beta

Integration 1 Integration 2 Integration n

Local Developer 1

Local Developer 2

Local Developer n-1

Local Developer n

1 2 3

4

n

Integration n-1

Previous[timestamp]

Page 4: TYPO3 - optymalizacja pracy z instancjami

Domeny

ProductionBackup

ProductionReplication

Integration 1 Integration 2 Integration n

Local Developer 1

Local Developer 2

Local Developer n-1

Local Developer n

1

n

Integration n-1

Domeny:yyy.loc

Domeny:yyy.loc

Domeny:yyy.loc

Domeny:yyy.loc

Domeny:yyy.myagency.com

Domeny:yyy-2.myagency.com

Domeny:yyy-m.myagency.com

Domeny:yyy-n.myagency.com

Domeny:www1.yyy.com

Domeny:www.yyy.com

Domeny:beta.yyy.com

4

Domeny:www.yyy.com

3

Production(current)

Beta Previous

Domeny:prev.yyy.com

2

[timestamp]

Page 5: TYPO3 - optymalizacja pracy z instancjami

Domeny - multilang z multidomain

ProductionBackup

ProductionReplication

Integration 1 Integration 2 Integration n

Local Developer 1

Local Developer 2

Local Developer n-1

Local Developer n

1

n

Integration n-1

Domeny:- yyy.loc- pl.yyy.loc- de.yyy.loc- ch.yyy.loc- ….....

Domeny:- yyy.loc- de.yyy.loc- pl.yyy.loc- ch.yyy.loc- ….....

Domeny:- yyy.loc- ple.yyy.loc- de.yyy.loc- ch.yyy.loc- ….....

Domeny:- yyy.loc- pl.yyy.loc- de.yyy.loc- ch.yyy.loc- ….....

Domeny:- yyy.myagency.com- pl.yyy.myagency.com- de.yyy.myagency.com- ….

Domeny:- yyy.myagency.com- pl.yyy-1.myagancy.com- de.yyy-1.myagancy.com– …...

Domeny:- yyy.myagency.com- pl.yyy-3.myagancy.com- de.yyy-3.myagancy.com– …...

Domeny:- yyy.myagency.com- pl.yyy-3.myagancy.com- de.yyy-3.myagancy.com– …...

Domeny:- www1.yyy.com- www1.yyy.pl- www1.yyy.de

4

Domeny:- yyy.myagency.com- pl.yyy-1.myagancy.com- de.yyy-1.myagancy.com– …...

Domeny:- www.yyy.com- www.yyy.pl- www.yyy.de- ...

Domeny:- beta.yyy.com- beta.yyy.pl- beta.yyy.de- ...

3

Production(current)

Beta Previous

Domeny:- prev.yyy.com- prev.yyy.pl- prev.yyy.de- ...

2

Domeny:- www.yyy.com- www.yyy.pl- www.yyy.de- ...

[timestamp]

Page 6: TYPO3 - optymalizacja pracy z instancjami

Solr – ustawienia hostów / core

ProductionBackup

ProductionReplication

Integration 1 Integration 2 Integration n

Local Developer 1

Local Developer 2

Local Developer n-1

Local Developer n

Integration n-1

Core:- /solr/live-yyy-1-0-en_EN/- /solr/live-yyy-1-1-pl_PL/- /solr/live-yyy-1-2-de_DE/- …..Path: www.yyy.comsite.solr.noindex = 1

Production(current)

Beta Previous

Core:- /solr/beta-yyy-1-0-en_EN/- /solr/beta-yyy-1-1-pl_PL/- /solr/beta-yyy-1-2-de_DE/- …..Path: www.yyy.com

Core:- /solr/live-yyy-1-0-en_EN/- /solr/live-yyy-1-1-pl_PL/- /solr/live-yyy-1-2-de_DE/- …..Path: www.yyy.com

Core:- /solr/dev-yyy-1-0-en_EN/- /solr/dev-yyy-1-1-pl_PL/- /solr/dev-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/dev-yyy-1-0-en_EN/- /solr/dev-yyy-1-1-pl_PL/- /solr/dev-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/dev-yyy-1-0-en_EN/- /solr/dev-yyy-1-1-pl_PL/- /solr/dev-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/dev-yyy-1-0-en_EN/- /solr/dev-yyy-1-1-pl_PL/- /solr/dev-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/live-yyy-1-0-en_EN/- /solr/live-yyy-1-1-pl_PL/- /solr/live-yyy-1-2-de_DE/- …..Path: www.yyy.com site.solr.noindex = 1

Core:- /solr/local-yyy-1-0-en_EN/- /solr/local-yyy-1-1-pl_PL/- /solr/local-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/local-yyy-1-0-en_EN/- /solr/local-yyy-1-1-pl_PL/- /solr/local-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/local-yyy-1-0-en_EN/- /solr/local-yyy-1-1-pl_PL/- /solr/local-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

Core:- /solr/local-yyy-1-0-en_EN/- /solr/local-yyy-1-1-pl_PL/- /solr/local-yyy-1-2-de_DE/- …..Path: yyy.myagency.com

[timestamp]

Page 7: TYPO3 - optymalizacja pracy z instancjami

Różne – google/wtyczki

ProductionBackup

ProductionReplication

Integration 1 Integration 2 Integration n

Local Developer 1

Local Developer 2

Local Developer n-1

Local Developer n

Integration n-1

general { preventIndexingByBots = 1 google.ga.disable = 1 search.indexing.disable = 1}

Production(current)

Beta Previous

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected]}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected]}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected]}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected]}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected] search.disable = 1 search.indexing.disable = 1}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected] search.disable = 1 search.indexing.disable = 1}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected] search.disable = 1 search.indexing.disable = 1}

general { preventIndexingByBots = 1 google.ga.disable = 1 email = [email protected] search.disable = 1 search.indexing.disable = 1}

general { preventIndexingByBots = 1 google.ga.disable = 1}

general { }

general { }

general { search.indexing.disable = 1}

[timestamp]

general { email = [email protected]}

DEFAULT FOR ALL INSTANCES:

Page 8: TYPO3 - optymalizacja pracy z instancjami

Dobrze jest ustawić takie domyślne wartości dla niebezpiecznych ustawień, które czynią najmniej szkody

i nadpisać je w wyższych kontekstach.

Page 9: TYPO3 - optymalizacja pracy z instancjami

Programista wdrażający się do projektu może zapomnieć lub nie być świadomy, że musi

ustawić kontekst.

Wówczas użyte zostaną bezpieczne wartości domyślne.

Page 10: TYPO3 - optymalizacja pracy z instancjami

DEFAULT BEZPIECZNY

ProductionBackup

ProductionReplication

Integration 1 Integration 2 Integration n

Local Developer 1

Local Developer 2

Local Developer n-1

Local Developer n

Integration n-1

general { overwriteAllEmails >}

Production(current)

Beta Previous

general {

}

general { }

general { }

general { }

general {

}

general {

}

general { }

general { search.indexing.disable = 0

}

general { google.ga.disable = 0 preventIndexingByBots = 0 overwriteAllEmails > } plugin.solr { [beta version settings] search.indexing.disable = 0 }

general { google.ga.disable = 0 preventIndexingByBots = 0 overwriteAllEmails > } plugin.solr { [live version settings] search.indexing.disable = 0 }

DEFAULT BEZPIECZNY:

general { google.ga.disable = 1 preventIndexingByBots = 1 email = [email protected] overwriteAllEmails = [email protected]}plugin.solr { [developers testing version] indexing.disable = 1 }

[timestamp]

Page 11: TYPO3 - optymalizacja pracy z instancjami

TIPgeneral.overwriteAllEmails Jeżeli general.overwriteAllEmails jest ustawiony w evencie SwiftMailera modyfikujemy email tak, żeby wysyłal zawsze na naszego specjalnie spreparowanego emaila.

Email testowy:

[email protected] docelowy:

[email protected]

Page 12: TYPO3 - optymalizacja pracy z instancjami

TIPlinkowanie mediów Im więcej instancji tym gigabajty mediów sprawiają większy problem.

Rozwiązaniem może być tworzenie linków symbolicznych do pojedynczych plików.Skasować wówczas możemy tylko link a nie prawdziwy plik.

Page 13: TYPO3 - optymalizacja pracy z instancjami

Podsumujmy ustawienia

Page 14: TYPO3 - optymalizacja pracy z instancjami

Ustawienia dla każdej instancji w notacji TSPrzykład dla strony bez języków

general { google.ga.disable = 1 preventIndexingByBots = 1 email = [email protected] overwriteAllEmails = [email protected]

}

domains { main = www.yyy.loc }

plugin { solr { host = yyy.myagancy.com path {

en = /solr/testing-yyy-1-0-en_EN/ } } }

Page 15: TYPO3 - optymalizacja pracy z instancjami

Ustawienia dla każdej instancji w notacji TSPrzykład dla strony z językami w jednej domenie

general { preventIndexingByBots = 1 google {

ga.disable = 1}search {

indexing.disable = 1 frontend.disable = 1 backend.disable = 1 }

} domains {

main = www.yyy.loc } plugin { solr { host = yyy.myagancy.com path {

en = /solr/testing-yyy-1-0-en_EN/pl = /solr/testing-yyy-1-1-PL_PL/

de = /solr/testing-yyy-1-2-de_DE/ } } }

www.yyy.comwww.yyy.com/pl

www.yyy.com/de

Page 16: TYPO3 - optymalizacja pracy z instancjami

Ustawienia dla każdej instancji w notacji TSPrzykład dla strony z językami w wielu domenach

general { preventIndexingByBots = 1 google {

ga.disable = 1}search {

indexing.disable = 1 frontend.disable = 1 backend.disable = 1 }

} domains {

england = www.yyy.loc poland = pl.yyy.loc germany = de.yyy.loc } plugin { solr { host = yyy.myagancy.com path {

en = /solr/testing-yyy-1-0-en_EN/pl = /solr/testing-yyy-1-1-PL_PL/

de = /solr/testing-yyy-1-2-de_DE/ } } }

www.yyy.locpl.yyy.loc

de.yyy.loc

Page 17: TYPO3 - optymalizacja pracy z instancjami

World of all applications

World of TYPO3

Page 18: TYPO3 - optymalizacja pracy z instancjami

Gdzie będziemy używali tych informacji?

Page 19: TYPO3 - optymalizacja pracy z instancjami

Zwyczajowe miejsce tych danychto stałe w Typoscript

Page 20: TYPO3 - optymalizacja pracy z instancjami

Gdzie będziemy używali tych informacji?

WARUNKOWE RENDEROWANIE FRONTENDU

TS SETUP:lib.header_search >lib.header_search = COAlib.header_search.if.isFalse = {$general.search.frontend.disable}lib.header_search.wrap = <div class="search clearfix">|</div>lib.header_search.10 < plugin.tx_solr_pi_search

Page 21: TYPO3 - optymalizacja pracy z instancjami

Gdzie będziemy używali tych informacji?

WARUNKOWE WYSYŁANIE HEADERÓW

TS SETUP:[globalVar = LIT:1 = {$general.preventIndexingByBots}]config.additionalHeaders = X-Robots-Tag:noindex,nofollow[end]

Page 22: TYPO3 - optymalizacja pracy z instancjami

Gdzie będziemy używali tych informacji?

MULTILANG DLA DOMEN NARODOWYCH

TS SETUP:// Poland version[globalString = IENV:HTTP_HOST = {$domains.poland}] || [globalVar = GP:L = 1]config {

sys_language_uid = 1language = pllocale_all = pl_PL.UTF-8htmlTag_langKey = pl

}plugin.tx_solr.index.queue.pages.indexer.frontendDataHelper.host = {$domains.poland}[end]

Page 23: TYPO3 - optymalizacja pracy z instancjami

Gdzie będziemy używali tych informacji?

CORE i PATH DLA SOLR

TS SETUP:

plugin.tx_solr {solr {

host = {$plugin.tx_solr.solr.host}path = {$plugin.tx_solr.solr.path.en}

}}

[globalString = IENV:HTTP_HOST = {$domains.poland}] || [globalVar = GP:L = 1] plugin.tx_solr.solr.path = {$plugin.tx_solr.solr.path.pl}[end]

[globalString = IENV:HTTP_HOST = {$domains.germany}] || [globalVar = GP:L = 2] plugin.tx_solr.solr.path = {$plugin.tx_solr.solr.path.de}[end]

Page 24: TYPO3 - optymalizacja pracy z instancjami

Gdzie będziemy używali tych informacji?

KONFIGURACJA REALURL DLA DOMEN

$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']['pagePath']['rootpage_id'] = 1;

$TYPO3_CONF_VARS['EXTCONF']['realurl']['beta.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];$TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-1.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];$TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-2.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];….….…..$TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy.loc'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];

unset($TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']);

REAL URL DOKUMENTACJA O $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']

_DEFAULT

Key_DEFAULT

Type->siteCfg or pointer to other key with ->siteCfg in same array

Description(Deprecated) Configuration of default Speaking URL coding if no matches was found for the specific HOST name.

Warning! This is a legacy feature. The use of this option is highly discouraged because it leads to hard to detect errors with speaking URLs, wrong page id resolution, etc. Users are strongly recommended not to use _DEFAULT with multidomain web sites. This will not work correctly and be removed in future versions completely.

Page 25: TYPO3 - optymalizacja pracy z instancjami

Jak zmieniać stałe TS w zależności od instancji?

METODA 1

1. W każdej z instancji utworzyć plik ze stałymi w lokalizacji typo3conf/constants_local.ts i wylączyć ten plik z GIT

3. Dodać includowanie tego pliku w odpowiednim miejscu w TYPO3 <INCLUDE_TYPOSCRIPT: source="typo3conf/constants_local.ts">

WADY:1. Przy dużej liczbie stałych i instancji TYPO3 wzrasta ryzyko błędów.2. Brak śledzenia zmian z wykorzystaniem systemów wersjonowania.3. Brak automatycznej propagacji zmian z wykorzystaniem systemów wersjonowania.

Page 26: TYPO3 - optymalizacja pracy z instancjami

Jak zmieniać stałe TS w zależności od instancji?METODA 2

1. Utworzyć pliki ze stalymi zależnymi od instancji i dodać do GIT: fileadmin /typoscript/ constants/ constants_default.ts fileadmin /typoscript/ constants/ constants_default_local.ts fileadmin /typoscript/ constants/ constants_default_staging.ts fileadmin /typoscript/ constants/ constants_default_live.ts fileadmin /typoscript/ constants/ constants_local.ts fileadmin /typoscript/ constants/ constants_integration-1.ts fileadmin /typoscript/ constants/ constants_integration-n.ts fileadmin /typoscript/ constants/ constants_..........ts fileadmin /typoscript/ constants/ constants_beta.ts fileadmin /typoscript/ constants/ constants_prev.ts fileadmin /typoscript/ constants/ constants_backup.ts fileadmin /typoscript/ constants/ constants_live.ts

2. Utworzyć plik typo3conf/constants_local.ts w każdej z instancji, wyłączyć go z GIT i dodać jego includowanie w TYPO3 <INCLUDE_TYPOSCRIPT: source="FILE:typo3conf/constants_local.ts">

3. Dodać w nim includowanie pliku zależne od instancji <INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/typoscript/constant/constants_default_local.ts"> <INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/typoscript/constant/constants_local.ts">

Page 27: TYPO3 - optymalizacja pracy z instancjami

Jak zmieniać stałe TS w zależności od instancji?METODA 2

WADY:1. Przy dużej liczbie stałych i instancji TYPO3 wzrasta ryzyko błędów.2. Brak śledzenia zmian z wykorzystaniem systemów wersjonowania.3. Brak automatycznej propagacji zmian z wykorzystaniem systemów wersjonowania.

1. Nie mamy określonego kontekstu na poziomie PHP.2. Nie uzyskamy stałych na niskim poziomie, kiedy nie ma jeszcze obiektu TSFE /realurl, eID, pliki ext_tables.php/3. Uzyskanie tych danych w BE wymaga sparsowania całego drzewa TS.4. W warunkach w stałych nie można używać stałych.

To nie zadziała w sekcji stałych: [globalString = IENV:HTTP_HOST = {$domains.poland}] || [globalVar = GP:L = 1] plugin.tx_solr.solr.path = {$plugin.tx_solr.solr.path.pl} [end]

Page 28: TYPO3 - optymalizacja pracy z instancjami

PROPERTYMANAGER

Page 29: TYPO3 - optymalizacja pracy z instancjami

1. Plik ze zmiennymi kontekstu wybierany automatycznie na podstawie kontekstu określonego w VHOST / .htaccess / PHP – zmniejszamy liczbę miejsc konfiguracji.

2. Zmienne dostępne w PHP i w Typoscript.

3. Możliwość korzystania w PHP ze zmiennych na niskim pozimie. (index.php / ext_localconf.php etc)

4. Głośna informacja jeżeli zmianna kontekstowa nie jest ustawiona dla kontekstu a są do niej odwołania.

5. Parsing TS jest cachowany. Usuwanie cachu – „Clear all cache”

6. Warunki ze „stałymi” w warunkach w sekcji CONSTANTS działają.

Po co jest propertymanager?

Page 30: TYPO3 - optymalizacja pracy z instancjami

Przykładowa konfiguracja IW Extension Manager ustawiamy sciezkę do pliku głównego: files/resources/private/typosctipt/context/context_default.txt

config.tx_propertymanager {required = 1context {

default { email = [email protected]

overwriteAllEmails = [email protected]}

default_staging < .default

default_live < .default default_live {

email = [email protected] overwriteAllEmails = [email protected]

}

kontekst1 < .default_live kontekst1 {…......}

}}

<INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_local.txt"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_integration-1.ts"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_integration-2.ts"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_integration-3.ts">…<INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_beta.ts"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_beta.ts"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_34234234.ts"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_prev.ts"><INCLUDE_TYPOSCRIPT: source="FILE:files/resources/private/typosctipt/context/context_live.ts">

Page 31: TYPO3 - optymalizacja pracy z instancjami

Przykładowa konfiguracja II

Przykładowa zawartość: files/resources/private/typosctipt/context/context_local.ts

config.tx_propertymanager {context {

local < .default_local

}}

Page 32: TYPO3 - optymalizacja pracy z instancjami

Przykładowa konfiguracja IIIPrzykładowa zawartość: files/resources/private/typosctipt/context/context_live.ts

config.tx_propertymanager {context {

live < .default_livelive {

google.ga.disable = 0...

}}

}

Page 33: TYPO3 - optymalizacja pracy z instancjami

Jak ustalić kontekst?1) VHOST

<VirtualHost 127.0.0.1:80>DocumentRoot "T:\workspace-typo3\projects\projekt - client1.loc"ServerName www.client1.locSetEnv CONTEXT_IDENTIFIER local</VirtualHost>

2) .htaccess

SetEnv CONTEXT_IDENTIFIER local_developer1

3) Ustawiając $GLOBALS['CONTEXT_IDENTIFIER'] w pliku wyłączonym z GIT a) w TYPO3 < 6.0 w pliku typo3conf/localconf_local.php i includowanym w typo3conf/localconf.php

b) w TYPO3 > 6.0 w pliku AdditionalConfiguration.php

Page 34: TYPO3 - optymalizacja pracy z instancjami

Jak wykorzystać dane z kontekstów?W PHP:

$propertymanager = t3lib_div::makeInstance('tx_propertymanager_Manager');$domains = $propertymanager->getProperty('domains.');echo($domains['poland']);

W CONSTANTS z poniższą notacją:

general { email_1 = {@email} email_2 = {@tx_myextension->getValue('email')} otherValue = {@tx_myextension->getSomeValue()}}domains { poland = {@domains.poland} germany = {@domains.germany} …..}

[globalString = IENV:HTTP_HOST = {@domains.germany}] || [globalVar = GP:L = 2] plugin.tx_solr.solr.path = {@plugin.tx_solr.solr.path.de}[end]

W SETUP już standardowo używamy zwykłych CONSTANTSplugin.tx_ext { emailAdmin = {$email}}

Page 35: TYPO3 - optymalizacja pracy z instancjami

Realurl?

KONFIGURACJA REALURL DLA DOMEN

$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];$TYPO3_CONF_VARS['EXTCONF']['realurl']['beta.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];$TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-1.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];$TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-2.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];….….…..$TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy.loc'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];

unset($TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']);

include_once(PATH_site . '/typo3conf/ext/propertymanager/Classes/class.tx_propertymanager_Manager.php');

/** @var /* tx_propertymanager_Manager $propertymanager */ $propertymanager = t3lib_div::makeInstance('tx_propertymanager_Manager'); $domains = $propertymanager->getProperty('domains.'); foreach($domains as $domain) { $TYPO3_CONF_VARS['EXTCONF']['realurl'][$domain] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']; } unset($TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']);

Page 36: TYPO3 - optymalizacja pracy z instancjami

RESTRICTFE

Page 37: TYPO3 - optymalizacja pracy z instancjami

Wady autoryzacji .htaccess

1) długość autoryzacji to sesja Użytkownik zamknie przeglądarkę i musi autoryzować się raz jeszcze

2) żeby działała autoryzacja musimy zmienić plik vhosta lub htaccess. Do modyfikacji VHOSTa nie zawsze mamy dostęp a modyfikacja .htaccess wiąże się z jego wyłączeniem z GIT

Page 38: TYPO3 - optymalizacja pracy z instancjami

Co może restrictfe?

Page 39: TYPO3 - optymalizacja pracy z instancjami

Extension manager

Page 40: TYPO3 - optymalizacja pracy z instancjami

Profil użytkownika

Page 41: TYPO3 - optymalizacja pracy z instancjami

Aktywacja

W pliku typo3conf/localconf_local.php /out off git/ $TYPO3_CONF_VARS['EXTCONF']['restrictfe']['enable'] = '0';

Page 42: TYPO3 - optymalizacja pracy z instancjami

Zalety

1) Długość autoryzacji ustawiana dowolnie Użytkownik autoryzuje się raz – ogląda wielokrotnie po zamknięciu / otwarciu przegladarki. Autozycacja trzymana w cookie, przy czym możemy wyczyścić po stronie TYPO3 autoryzację.

2) Strona powitalna nowej witryny Ponieważ template pojawiający się bez autoryzacji jest dowolny więc można przygotować stronę powitalną (Witamy! Już niedługo w tym miejscu będzie witryna naszej firmy ABC”). Użytkownicy, którzy zalogują się do TYPO3 w BE ekranu powitalnego nie zobaczą.

3) Brak autoryzacji dla określonych IP i headerów Są wtyczki do przegladarek/proxy, które ustawiają header do każdego requestu.

4) Nie trzeba modyfikować .htaccess Htaccess może pozostać w GIT.

5) Można wykorzysta na LIVE do blokady wersji językowych Witryna jest już LIVE, ale dodano nową wersję językową, którą trzeba przetłumaczyć. yyy.com/cz/ - bez blokady możliwość zindeksowania przez googla

6) Tylko jedno hasło do BE! User ma tyko hasło do BE – nie potrzebuje hasła do .htaccess

Page 43: TYPO3 - optymalizacja pracy z instancjami

Połączenie PROPERTYMANAGER I RESTRICTFEWyłączenie widoku określonych domen językowych

include_once(PATH_site . '/typo3conf/ext/propertymanager/Classes/class.tx_propertymanager_Manager.php');

/** @var tx_propertymanager_Manager $propertymanager */$propertymanager = t3lib_div::makeInstance('tx_propertymanager_Manager');$domains = $propertymanager->getProperty('domains.');foreach($domains as $domain) { if( $_SERVER['HOST'] == $domain['url'] && $domain['restrictfe'])

$TYPO3_CONF_VARS['EXTCONF']['restrictfe']['enable'] = TRUE;}

Page 44: TYPO3 - optymalizacja pracy z instancjami

Dziękuję za uwagę

Krystian Szymukowicz ([email protected])

http://typo3.org/extensions/repository/view/restrictfeRESTRICTFE

[email protected]