![]() |
Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
![]() |
#1 | ||
Administrator
|
![]() Цитата:
Цитата:
Возможно лучше сделать класс categories, один раз его инициализировать (с двумя запросами - и потом уже работать с массивами) |
||
![]() |
![]() |
![]() |
#2 |
Продвинутый
Регистрация: 13.02.2006
Сообщений: 49
|
![]()
Аська у меня 255-308-799, видимо ты не авторизовал, хотя у меня в списке есть
Про запросы - все надо делать немного иначе. Надо использовать т. н. MM-отношения, для них в typo есть даже спец определения (проще говоря это SQL JOIN). Иначе говоря, заменить такие строки: $linksInCurrentCategoryResults = $GLOBALS['TYPO3_DB']->exec_SELECTquery( '*', $databaseTable, $theField . '=' . $GLOBALS['TYPO3_DB']->quoteStr( $theValue, $databaseTable ) . ' ' . $whereClause, $groupBy, $orderBy, $limit ); на такие $linksCurrentCategoryResults = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query( $databaseTable . '.*', $databaseTable, $this->tablePrefix . 'link_cat_mm', '', 'AND ' . $this->tablePrefix . 'link_cat_mm.uid_foreign =' . $GLOBALS['TYPO3_DB']->quoteStr( $theValue, $databaseTable ) . ' ' . $whereClause, $groupBy, $orderBy, $limit ); Запросов остается столько же - все объединение решает MySQL. Кроме запросов ничего в коде не меняется. Ну и, естественно, в TCA.php в 'category' добавляется что-то типа: 'MM' => 'tx_ablinklist_link_cat_mm', 'autoSizeMax' => 25, 'size' => 3, 'minitems' => 0, 'maxitems' => 500 |
![]() |
![]() |
![]() |
#3 | |
Administrator
|
![]() Цитата:
Можно код посмотреть: http://www.typo3lab.com/fileadmin/ext/ |
|
![]() |
![]() |
![]() |
#4 |
Продвинутый
Регистрация: 13.02.2006
Сообщений: 49
|
![]()
Значит, я не так понял. Это хорошо.
Действительно, рекурсивный проход SQL-запросом не сделаешь. Я уже раньше хотел посмотреть твой код, но для этого надо поставить расширение, а затирать свое не хочется. Может есть способ просмотра без установки? |
![]() |
![]() |
![]() |
#5 |
Administrator
|
![]() |
![]() |
![]() |
![]() |
#6 |
Продвинутый
Регистрация: 13.02.2006
Сообщений: 49
|
![]()
Вопросы снимаются.
Ма-а-аленькое дополнение - в exec_SELECT_mm_query foreign_table передавать в нашем случае необязательно, uid_foreign уже есть в relation_table. Но это влияет только на производительность и в целом - ерунда. Если что-то решим с Wiki - выложу туда свои модификации с комментариями. |
![]() |
![]() |