Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
03.09.2009, 14:27 | #11 |
Продвинутый
Регистрация: 11.02.2009
Сообщений: 65
|
Ну изначально мой магазин и существовал как отдельный модуль в каталоге shop/, и даже была административная панель, но этого всё-таки мало, поэтому я и решил связать его с typo3 для полного счастья.
Связал интернет-магазин с typo3 очень просто: взял расширение extendedshop и переписыл там все файлы под мой магазин, поэтому сейчас категории shop не существует и физически магазин находится в корне сайта, но фактически, конечно, он начинается со страницы shop, созданной правда в typo3. В итоге всё прекрасно работает вместе с typo3, но ссылки некрасивые. Изначально было два выхода: 1. попытаться всё-таки их переписать средствами typo3 или напрямую через mod_rewrite 2. Закачать папку с магазином в корень сайта и подключить шаблон, созданный в typo3 к магазину. По-моему 1-ый вариант покрасивши... |
03.09.2009, 15:23 | #12 |
Senior Member
|
Если все работает - то вам осталось вместо функции генерации URL для товара в коде вашего магазина вызвать TYPO3 функцию typolink() с нужными параметрами. Или одну из функций pi_*Link* из класса pi_base, от которого наследуются все FE плагины для TYPO3.
Получите красивые ссылки при правильной настройке RealURL/CoolURI. |
03.09.2009, 16:02 | #13 |
Продвинутый
Регистрация: 11.02.2009
Сообщений: 65
|
Моя функция для генерации красивого URL для товара:
public static function ToProduct($productId) { /*Сейчас определяю внешний вид ссылки (беру из бд имя продукта, соответствующее его ProductID)*/ $link = self::CleanUrlText(Catalog::GetProductName($produc tId)) . '/'; return self::Build($link); } то есть мне особо не надо генерить ссылки - они уже есть или всё равно надо? Вот моя функции для генерации простого URL для товара: public static function ToProduct($productId) { return self::Build('?ProductId=' . $productId); } Наверное сюда надо прикрутить функцию typolink()? А каким образом? Просто заменить на typolink()? Расширение pagepath подключать надо? Можно примерчик? И потом надо обратно url поменять? С помощью .htaccess? |
03.09.2009, 17:43 | #14 |
Senior Member
|
Такой вариант может сработать - генерить ссылки без TYPO3. TYPO3 при получении такого URL будет его парсить и заполнять соответствующие переменные в $_GET.
Если вы используете TYPO3 и для генерации - то получаете URL который будет правильно парситься. Иначе надо следующие нюансы. Сейчас у вас index.php?ProductID=9 переводится в shop/product_name9/ Пусть у вас есть страница с алиасом shop - ее RealURL распознает. Но дальше ему надо понять что делать с product_name9. В конфиге для RealURL вы привели код: Код:
'70' => array ( 'shop' => array ( array( 'GETvar' => 'ProductID', Но дальше идет префикс shop за которым будет title товара, причем из-за 'spaceCharacter' => '-' он будет таким "product-name9". Сгенерированный URL получиться таким: example.org/shop/shop/product-name9/ Он отличается от того, который вы передаете TYPO3 при помощи апачевского RewriteRule. Поэтому при парсинге возникнет ошибка, как вы приводили выше. Экст pagepath можно использовать для генерации корректного URL - ему передаются параметры страница, и ваш ProductID и он вернет URL. Но это не быстрое решение. Быстрее работает если создать объект cObject и вызвать у него typolink. Посмотрите как это делается в том же pagepath. У вас может получиться эмулировать корректный URL и не тратить дополнительное время на его генерацию через TYPO3. Но я не уверен что это сработает из-за подмены uid на title (lookUpTable). Возможно логика RealURL такова, что он именно при генерации запоминает соответствие uid и title и потом при парсинге его использует. |
03.09.2009, 17:59 | #15 |
Продвинутый
Регистрация: 11.02.2009
Сообщений: 65
|
Спасибо, буду пробовать.
|
03.09.2009, 22:13 | #16 |
Продвинутый
Регистрация: 11.02.2009
Сообщений: 65
|
1. Значит я попробывал генерить ссылки без TYPO3, но безуспешно. Правильно ли я всё делаю: установил расширение realurl, сконфигурировал файл realurlconf.php, сгенерил правильные ссылки и прописал файл .htaccess ("RewriteRule shop/shop/product_name9/ index.php?ProductID=9")?
2. А если использовать typo3 для генерации URL, то что надо сделать? Установить экст pagepath, и прописать линки через функцию typolink() в моём файле, и всё? А где надо обратно перевести url, чтобы потом его обработать (в .htaccess)? |
04.09.2009, 15:55 | #17 | |||
Senior Member
|
Цитата:
Цитата:
Код:
require_once(t3lib_extMgm::extPath('pagepath', 'class.tx_pagepath_api.php'); $parameters = array('PruductID' => 6); $url = tx_pagepath_api::getPagePath($pageId, $parameters); Я не видел код вашего плагина для TYPO3, но обычно обычно FE плагины наследуются от класса tslib_pibase, и тогда создание ссылки выглядит примерно так (typolink при этом вызывается внутри tslib_pibase): Цитата:
|
|||
07.09.2009, 15:30 | #18 |
Продвинутый
Регистрация: 11.02.2009
Сообщений: 65
|
Спасибо огромное за помощь! С задачей справился!
В итоге остановился на cooluri. А красивые ссылки инсертю в таблицу для cooluri с помощюь триггера, как только пишу новый продукт сразу в соответствующей таблицы показывается url на него. |
07.09.2009, 18:39 | #19 | |
Senior Member
|
Цитата:
По и самый "не TYPO3" способ PS: Кстати обратите внимание, что эти таблицы могут очищатся при "полной очистке кэша TYPO3". Так что сделайте для надежности ежедневную процедуру по крону заполнения для всех товаров. |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заставить расширение metaext (для добавления метатегов) работать? | Olga25 | Общие вопросы | 6 | 20.07.2009 14:12 |
Есть ли расширение filelist с ограничением доступа для FEUsers? | Sergey V | Общие вопросы | 13 | 27.11.2008 06:19 |
Посоветуйте расширение типо ab_linklist? | djolejek | Общие вопросы | 2 | 23.11.2008 22:12 |
Посоветуйте расширение статистики | shtala | TYPO3: SEO и статистика посещений | 4 | 11.02.2008 03:00 |
Кто-нибудь использовал расширение News FE Edit? | Manas | Общие вопросы | 9 | 07.12.2007 21:27 |