Просмотр полной версии : Как бы вы реализовали каталог Google?
Какие модули вы бы использовали для создания каталога типа Google или Яндекс.
Главные вопросы:
1. Как сделать навигацию типа каталога Google, т. е. ссылки на следующий уровень категорий и на некоторые (особо выделенные) подуровни?
2. А если ту же информацию из иерархического каталога я хочу получить одним списком?
Использовать спец. модуль или можно отшаблонить обычное меню?
Хочется услышать любые замечания по этому поводу. Спасибо
Valery Romanchev
16.01.2006, 21:15
Я сейчас как раз делаю такой проект - поисковая машина (nutch) + каталог.
Для каталога - варианта есть 2:
ab_linklist (Modern Linklist) - вообще нормальный и навороченный, но ссылки только в одной категории
sk_linklist - неск. категорий, но нет подсчета кликов (и вообще простоватый)
Остальные:
cmw_linklist 1 categ, clicks counter (not so good as ab_linklist)
av_otherresources (Link database) 1 categ, clicks counter
dd_links (DD Link-Catalog) - many categories, no clicks counter
tt_link 1 category
Спасибо!
Видимо, буду править ab_linklist под свои запросы.
Если есть интерес можно скооперироваться
Valery Romanchev
17.01.2006, 17:53
да, можно скооперироваться.
romanchev(на)typo3lab.ru
ICQ 120-145-408
Сделал возможность назначать много категорий на одну ссылку в BackEnd (с деревом, как в tt_news).
Сейчас работаю над исправлением фронт-энда (4-5 запросов надо переделать).
Потом еще форму добавление ссылки переделать.
Если кто заинтеревован в тестировании - с удовольствием предоставлю этот патч.
Автор экстеншена ответил - он заинтересован.
То есть патч будет интегрирован в следующую версию, что сделает ab_linklist лучшим по всем параметрам :D и может быть таким же популярным как tt_news :roll:
C удовольствыием приму участие в тестировании.
Valery Romanchev
23.01.2006, 16:39
http://www.typo3lab.com/fileadmin/ext/
Пока не сделано добавление ссылок в FE
Есть одна проблема:
куча запросов к базе. По хорошему - это надо переписывать.
Модифицировал ab_linklist, чтобы был тип представления CATALOGUE, похожий на первую страницу каталогов Яндекс и Google. Сделал опцию, чтобы задавать отличающийся тип представления для верхнего уровния иерархии и остальных. Русский перевод для FE.
Подключаю rf_content_comment для комментирования посетителями линков.
2Валерий Романчев: по аське ответа не получил
>куча запросов к базе
не понял - о чем речь. поясни, плиз
Valery Romanchev
24.01.2006, 01:50
2Валерий Романчев: по аське ответа не получил
Я не получал сообщений - какой у тебя номер?
>куча запросов к базе
не понял - о чем речь. поясни, плиз
Когда считается количество ссылок в категории, то делается рекурсивно вызывается функция. При каждом вызове - один или два запроса к базе.
Возможно лучше сделать класс categories, один раз его инициализировать (с двумя запросами - и потом уже работать с массивами)
Аська у меня 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
Valery Romanchev
24.01.2006, 13:42
Про запросы - все надо делать немного иначе. Надо использовать т. н. MM-отношения, для них в typo есть даже спец определения (проще говоря это SQL JOIN). Иначе говоря, заменить такие строки:
Ну я именно так и делал.
Можно код посмотреть: http://www.typo3lab.com/fileadmin/ext/
Значит, я не так понял. Это хорошо.
Действительно, рекурсивный проход SQL-запросом не сделаешь.
Я уже раньше хотел посмотреть твой код, но для этого надо поставить расширение, а затирать свое не хочется.
Может есть способ просмотра без установки?
Valery Romanchev
24.01.2006, 15:37
http://www.typo3lab.com/fileadmin/ext/ab_linklist.zip
Вопросы снимаются.
Ма-а-аленькое дополнение - в exec_SELECT_mm_query foreign_table передавать в нашем случае необязательно, uid_foreign уже есть в relation_table. Но это влияет только на производительность и в целом - ерунда.
Если что-то решим с Wiki - выложу туда свои модификации с комментариями.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot