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

Вернуться   Russian 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
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от Никита Посмотреть сообщение
В итоге всё прекрасно работает вместе с typo3, но ссылки некрасивые.
Если все работает - то вам осталось вместо функции генерации URL для товара в коде вашего магазина вызвать TYPO3 функцию typolink() с нужными параметрами. Или одну из функций pi_*Link* из класса pi_base, от которого наследуются все FE плагины для TYPO3.

Получите красивые ссылки при правильной настройке RealURL/CoolURI.
dmartynenko вне форума   Ответить с цитированием
Старый 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
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Такой вариант может сработать - генерить ссылки без 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',
Судя по всему 70 это uid страницы с алиасом shop.
Но дальше идет префикс 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 и потом при парсинге его использует.
dmartynenko вне форума   Ответить с цитированием
Старый 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
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от Никита Посмотреть сообщение
1. Значит я попробывал генерить ссылки без TYPO3, но безуспешно. Правильно ли я всё делаю: установил расширение realurl, сконфигурировал файл realurlconf.php, сгенерил правильные ссылки и прописал файл .htaccess ("RewriteRule shop/shop/product_name9/ index.php?ProductID=9")?
Я не телепат и не могу сказать какой URL получиться если генерировать его через TYPO3. Это зависит от настройки как TYPO3 так и RealURL. Поэтому правильный ли RewriteRule вы прописали я не знаю.

Цитата:
Сообщение от Никита Посмотреть сообщение
2. А если использовать typo3 для генерации URL, то что надо сделать? Установить экст pagepath, и прописать линки через функцию typolink() в моём файле, и всё? А где надо обратно перевести url, чтобы потом его обработать (в .htaccess)?
В документации к pagepath даже код приведен:
Код:
require_once(t3lib_extMgm::extPath('pagepath', 'class.tx_pagepath_api.php');
$parameters = array('PruductID' => 6);
$url = tx_pagepath_api::getPagePath($pageId, $parameters);
Через typolink быстрее будет работать. И возможно даже проще.
Я не видел код вашего плагина для TYPO3, но обычно обычно FE плагины наследуются от класса tslib_pibase, и тогда создание ссылки выглядит примерно так (typolink при этом вызывается внутри tslib_pibase):
Цитата:
$linkText = "Самый лучший продукт";
$urlParameters = array('ProductID' => $id);
$url = $this->pi_linkTP($linkText, $urlParameters);
dmartynenko вне форума   Ответить с цитированием
Старый 07.09.2009, 15:30   #18
Никита
Продвинутый
 
Регистрация: 11.02.2009
Сообщений: 65
По умолчанию

Спасибо огромное за помощь! С задачей справился!
В итоге остановился на cooluri. А красивые ссылки инсертю в таблицу для cooluri с помощюь триггера, как только пишу новый продукт сразу в соответствующей таблицы показывается url на него.
Никита вне форума   Ответить с цитированием
Старый 07.09.2009, 18:39   #19
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от Никита Посмотреть сообщение
Спасибо огромное за помощь! С задачей справился!
В итоге остановился на cooluri. А красивые ссылки инсертю в таблицу для cooluri с помощюь триггера, как только пишу новый продукт сразу в соответствующей таблицы показывается url на него.
Самый простой и думаю самый эффективный способ.
По и самый "не TYPO3" способ

PS: Кстати обратите внимание, что эти таблицы могут очищатся при "полной очистке кэша TYPO3". Так что сделайте для надежности ежедневную процедуру по крону заполнения для всех товаров.
dmartynenko вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить расширение 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


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


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

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