Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 24.01.2006, 01:50   #1
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию re: Как бы вы реализовали каталог Google?

Цитата:
2Валерий Романчев: по аське ответа не получил
Я не получал сообщений - какой у тебя номер?

Цитата:
>куча запросов к базе
не понял - о чем речь. поясни, плиз
Когда считается количество ссылок в категории, то делается рекурсивно вызывается функция. При каждом вызове - один или два запроса к базе.
Возможно лучше сделать класс categories, один раз его инициализировать (с двумя запросами - и потом уже работать с массивами)
Valery Romanchev вне форума   Ответить с цитированием
Старый 24.01.2006, 11:53   #2
Олег
Продвинутый
 
Регистрация: 13.02.2006
Сообщений: 49
По умолчанию re: Как бы вы реализовали каталог Google?

Аська у меня 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
Олег вне форума   Ответить с цитированием
Старый 24.01.2006, 13:42   #3
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию re: re: Как бы вы реализовали каталог Google?

Цитата:
Про запросы - все надо делать немного иначе. Надо использовать т. н. MM-отношения, для них в typo есть даже спец определения (проще говоря это SQL JOIN). Иначе говоря, заменить такие строки:
Ну я именно так и делал.
Можно код посмотреть: http://www.typo3lab.com/fileadmin/ext/
Valery Romanchev вне форума   Ответить с цитированием
Старый 24.01.2006, 14:59   #4
Олег
Продвинутый
 
Регистрация: 13.02.2006
Сообщений: 49
По умолчанию re: Как бы вы реализовали каталог Google?

Значит, я не так понял. Это хорошо.
Действительно, рекурсивный проход SQL-запросом не сделаешь.
Я уже раньше хотел посмотреть твой код, но для этого надо поставить расширение, а затирать свое не хочется.
Может есть способ просмотра без установки?
Олег вне форума   Ответить с цитированием
Старый 24.01.2006, 15:37   #5
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию re: re: Как бы вы реализовали каталог Google?


http://www.typo3lab.com/fileadmin/ext/ab_linklist.zip
Valery Romanchev вне форума   Ответить с цитированием
Старый 24.01.2006, 16:42   #6
Олег
Продвинутый
 
Регистрация: 13.02.2006
Сообщений: 49
По умолчанию re: Как бы вы реализовали каталог Google?

Вопросы снимаются.
Ма-а-аленькое дополнение - в exec_SELECT_mm_query foreign_table передавать в нашем случае необязательно, uid_foreign уже есть в relation_table. Но это влияет только на производительность и в целом - ерунда.
Если что-то решим с Wiki - выложу туда свои модификации с комментариями.
Олег вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:26.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория