TYPO3 LTS 9: Unterschied zwischen den Versionen
Aus Vosp.info
V (Diskussion | Beiträge) |
V (Diskussion | Beiträge) (→Query Builder) |
||
Zeile 188: | Zeile 188: | ||
== Query Builder == | == Query Builder == | ||
+ | === Klassen=== | ||
<source lang=php> | <source lang=php> | ||
use TYPO3\CMS\Core\Database\ConnectionPool; | use TYPO3\CMS\Core\Database\ConnectionPool; | ||
Zeile 193: | Zeile 194: | ||
use TYPO3\CMS\Core\Utility\GeneralUtility; | use TYPO3\CMS\Core\Utility\GeneralUtility; | ||
</source> | </source> | ||
+ | === queryBuilder=== | ||
<source lang=php> | <source lang=php> | ||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class) | $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class) | ||
->getQueryBuilderForTable('tt_news'); | ->getQueryBuilderForTable('tt_news'); | ||
− | + | </source> | |
+ | === FROM=== | ||
+ | <source lang=php> | ||
$qB = $queryBuilder->from('tt_news', 'n'); | $qB = $queryBuilder->from('tt_news', 'n'); | ||
+ | </source> | ||
+ | === WHERE=== | ||
+ | <source lang=php> | ||
$qB->where( | $qB->where( | ||
$queryBuilder->expr()->eq('pid', (int) $store_page_id) | $queryBuilder->expr()->eq('pid', (int) $store_page_id) |
Version vom 5. Januar 2019, 02:07 Uhr
- https://forge.typo3.org/attachments/download/33482/TYPO3-v9-2-whats-new.german.pdf
- https://blog.comwrap.com/typo3-version-9-die-wichtigsten-features-des-major-releases
- https://jweiland.net/typo3/versionen-und-updates/version-9.html
- https://forge.typo3.org/attachments/download/33888/TYPO3-v9-LTS-whats-new.german.pdf
Inhaltsverzeichnis
Benötigte Software & Konfiguration
apt-get install imagemagick wget bash-completion zip unzip apache2 libapache2-mod-php7.2 php7.2-cli php7.2 php7.2-common php7.2-imap php7.2-intl php7.2-mysql php7.2-readline php7.2-soap php7.2-zip php7.2-zip php7.2-gd php7.2-xml php7.2-gd php7.2-json php7.2-opcache php-imagick php7.2-curl php7.2-mbstring php7.2-bcmath php7.2-gmp php7.2-zip mysql-server composer
a2enmod deflate rewrite headers mime expires ssl
mysql_secure_installation
USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
exit;
#Falls Die Sicherheit für Passwörte nachträglich geändert werden muss.
mysql$ SHOW VARIABLES LIKE 'validate_password%';
mysql$ SET GLOBAL validate_password_policy=LOW;
vim /etc/mysql/mysql.conf.d/mysqld.cnf
#add
[mysqld]
validate_password_policy=LOW
Typo3 Grundinstallation
cd in /var/www/domain
git clone https://github.com/TYPO3/TYPO3.CMS.git
cd TYPO3.CMS/
git fetch --tags
git tag --list
git checkout tags/v.9.5.1
#Externe Bibliotheken installieren
composer install
cd ..
ln -s TYPO3.CMS typo3_src
ln -s typo3_src/typo3 typo3
ln -s typo3_src/index.php .
touch FIRST_INSTALL
# /etc/php/7.2/apache2/php.ini
max_execution_time = 240
max_input_vars = 1500
Module
Sites
Sprachen lanugages
- https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/SiteHandling/Basics.html
- https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Internationalization/ManagingTranslations.html
- https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/SiteHandling/AddLanguages.html#
Achtung, derzeit existiert ein language fallback BUG :( https://forge.typo3.org/issues/86762 Seiten welche noch nicht übersetzt sind, kommen auf ne 404 Seite
- erstmal müssen Sprachen angelegt werden auf der Seite 0 (ganz ganz oben in der Seiten Hierrachie) ... dann kann angefangen werden Sprachen über Sites zu konfigurieren
- die Startseite (auch wenn nur Verweis) muss übersetzt werden mit dem Seiten oder Listen Modul
page = PAGE
page {
10 = FLUIDTEMPLATE
10 {
dataProcessing {
120 = TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor
120 {
languages = auto
as = ncMenuLanguage
}
}
}
}
Extensions
scheduler
über EM Local
vhs
über EM Repository
includekrexx
über EM Repository
ws_scss
git clone https://github.com/svewap/ws_scss.git
gridelements
git clone https://github.com/TYPO3-extensions/gridelements.git
t3sbootstrap
- über https://www.t3sbootstrap.de/typo3-95/
- Konfiguration
- Einstellungen > Extension Configuration > t3sbootstrap > Custom SCSS
- Custom SCSS activate (clear cache and run Scheduler).
- Wartung > Flush TYPO3 and PHP Cache
- Scheduler
- Add task
- Class: T3SB Custom Scss - write a custom scss file
- Type: Single
- TASK "T3SB Custom Scss - write a custom scss file (t3sbootstrap)" ausführen
- Add task
- T3SB Config > nctypo9 (s. TYPO3_LTS_9#Beispiel_Seitenbaum) > New main configuration
- Einstellungen > Extension Configuration > t3sbootstrap > Custom SCSS
lang (Sprache)
Die Sprachkonfiguration wurde in das installtool verlegt
alte Extension Anpassungen
@inject => @TYPO3\CMS\Extbase\Annotation\Inject
@ignorevalidation => @TYPO3\CMS\Extbase\Annotation\IgnoreValidation
render Mode deprecated
<f:flashMessages renderMode="div" />
<f:flashMessages />
htmlEscape="false" deprecated
<f:translate key="email_user_salutation" htmlEscape="false"/>
<f:translate key="email_user_salutation" />
<f:translate key="email_user_salutation" htmlEscape="false"/>,
netz.coop Extensions
anclib
ancbasic
Konfiguration:
Beispiel Seitenbaum
id:0 nctypo
- id:1; Typ: Standard; Verhalten: Als Anfang der Website benutzen; Ressourcen: ancbasic; Erscheinungsbild > Backend-Layout ancbasic layout template; add Template enthält fluid_styled_content,gridelements, t3sbootstrap, anclib, ancbasic
- id:2; Typ: Ordner; Name: menu_main
- id:4: Typ: Seite; Name: Seite 1
- id:5: Typ: Seite; Name: Seite 2
- id:7: Typ: Seite; Name: Seite 2.1
- id:8: Typ: Seite; Name: Seite 2.2
- id:9: Typ: Seite; Name: Seite 2.3
- id:6: Typ: Seite; Name: Seite 3
- id:3; Typ: Ordner; Name: menu_footer
- id:10: Typ: Seite; Name: Kontakt
- id:11: Typ: Seite; Name: Impressum
- id:12: Typ: Seite; Name: Sitemap
- id:13: Typ: Seite; Name: Datenschutz
- id:2; Typ: Ordner; Name: menu_main
Speaking URLS
Site management => Sites
Source Code Änderungen - deprecated ...
@TYPO3\CMS\Extbase\Annotation\Inject not @inject
Query Builder
Klassen
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
queryBuilder
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('tt_news');
FROM
$qB = $queryBuilder->from('tt_news', 'n');
WHERE
$qB->where(
$queryBuilder->expr()->eq('pid', (int) $store_page_id)
);
Komplexe Abfragen
$qB->andWhere(
' n.ncindexcontent like \'%' . $searchword . '%\' '
);
join
$qB->join(
'n',
'tt_news_cat_mm',
'p2c' . $join_i,
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('p2c' . $join_i . '.uid_local', $queryBuilder->quoteIdentifier('n.uid')),
$queryBuilder->expr()->in('p2c' . $join_i . '.uid_foreign', trim(implode(",", $ORCategoriesArray),','))
)
);
Limit
$qB->setMaxResults($LIMIT_values['limit']);
Offset
$qB->setFirstResult($LIMIT_values['from']);
Select
$qB->select('*', 'n.uid as uid');
Order By
$qB->orderBy('crdate', 'DESC');
Ausführen
$rows = $qB->execute()->fetchAll();
Count Distinct AS COUNT
$qB->addSelectLiteral(
$queryBuilder->expr()->count('n.uid', 'count')
);
Count Ausführen
$rows = $qB->execute()->fetch();