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

Вернуться   Russian TYPO3 community > Тематические форумы > Разработка расширений / TYPO3 extension development

Ответ
 
Опции темы Опции просмотра
Старый 06.01.2012, 04:14   #1
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию Как получить значение из TS setup в php контроллере?

Привет, возникла необходимость немного изменить расширение (а ля tt_news), а именно получить значение для single страницы.

Имеем такую структуру в дереве:

Page1 (тут хранятся сами новости и есть шаблон TS setup) - PID 5
- Page2 (для single страницы) - PID 6

В TS setup Page1 нечто такое:
Код:
plugin.tx_extname_pi1.single_pid = 6
И соответственно для каждого экземпляра в базе есть значение pid - стр, на которой хранится эта новость.

В php обработчике могу получить значение pid для каждой из новости (для ссылки на single новость), примерно так:
Код:
$_link_conf = array(
'parameter' => $row['pid'],
)
а мне надо получить не само значение pid (в примере выше это 5), а значение plugin.tx_extname_pi1.single_pid со страницы с pid='pid'.
То есть в итоге получить в качестве 'parameter' = 6
Надеюсь, что не очень путано все объяснил.
Всем спасибо!..
Илья вне форума   Ответить с цитированием
Старый 06.01.2012, 15:37   #2
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Можете описать задачу более высокого уровня?
Может попробовать видоизменить задачу и найти другое решение?

Так как что бы получить этот pid из любого места вам нужно:
1. инициализировать ядро TSFE
2. сделать вид что текущая страница #5
3. вызрать парсер TS скриптов, который соберет и "скомпилирует" все TS скрипты от 5 до корня сайта
4. потом в $TSFE->config[..] вы сможете найти нужное значение.

Но во-первых это медленно, во вторых если вы уже в режиме FE на странице скажем 7, то это и вовсе не получится.

Как инициализировать TSFE в режиме eID можете посмотреть тут: http://typo3.org/extensions/reposito...epath/current/

Чаще всего для получения подобного single pid используют такой прием. Новость привязывается к категории, а в записи категории указывается pid станицы на которой должны показываться новости этой категории. Тогда получение single pid для новости сводится к одному дополнительному запросу к БД.
Если подойти со стороны БД, то можно придумать еще варианты - добавить специальное поле в pages и на странице 5 указать страницу 6 в этом поле.
dmartynenko вне форума   Ответить с цитированием
Старый 06.01.2012, 17:50   #3
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

Благодарю за ответ!
Действительно, новости НЕ привязаны к категориям, а просто хранятся в разных страницах. Самих категорий как-таковых нет...
Здесь не tt_news в чистом виде, и поэтому такие извращения и приходится использовать
По вашим пунктам 1-4 - похоже на правду, про скорость догадываюсь
Про страницу 7 не очень понял, думаю что все будет ок, т.к. структура страниц для всех продуктов одинакова, т.е. имеем
Page1 (тут хранятся сами новости и есть шаблон TS setup) - PID 5
- Page2 (для single страницы) - PID 6
Page3 (тут хранятся сами новости и есть шаблон TS setup) - PID 7
- Page4 (для single страницы) - PID 8
и так далее...
Доп. поле в БД - думаю что крайний вариант, т.к. не очень удобно будет редакторам сайта, да и правильнее указать это значение в родительской странице, а не во всех новостях...
Илья вне форума   Ответить с цитированием
Старый 06.01.2012, 18:04   #4
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Страницу 7 я упомянул в том смысле, что если вы в FE на странице (7) другой ветки сайта (то есть не на странице 5 или 6, где нужный TS уже и так в TSFE), то инициализировать TSFE заново с другим pid вряд ли получиться.

И я как раз и пишу, что надо добавить на родительской странице настройку, а не в каждой новости:
Цитата:
добавить специальное поле в pages и на странице 5 указать страницу 6 в этом поле
Но если у вас такая четкая структура страниц "родитель со списком - один потомок для single", то id этого потомка легко найти по таблице pages.

А чем вызвана необходимость отдельной страницы для single в вашем случае? Ведь по наличию GET переменной в TYPO3 можно сделать все что угодно с TS шаблоном - вывести другой шаблон страницы, по другому его напонить, поменять режим tt_news с list на single и т.п.
dmartynenko вне форума   Ответить с цитированием
Старый 06.01.2012, 18:10   #5
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

А вот искать потомков в pages - это может быть выход!..
Отдельная страница для single -это то, что сразу пришло в голову и в принципе работает как надо.
Думаю, что через GET это можно было бы сделать более элегантно, но это заняло бы у меня больше времени...
Буду копать в сторону pages и получения данных из этой таблицы
Илья вне форума   Ответить с цитированием
Старый 09.01.2012, 04:51   #6
Илья
Senior Member
 
Регистрация: 15.02.2006
Адрес: Петербург
Сообщений: 462
По умолчанию

dmartynenko
Действительно, через pages удалось добраться до нужных данных, как то так:
Код:
$pid_n = $row['pid'];		
$single_pid_product = "SELECT uid FROM pages where pid='".$pid_n."'";
$result_select_url = mysql_query($single_pid_product);
Еще раз мерси за помощь!
Илья вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить php код в шаблон сайта на typo3 givemesomedrugs Общие вопросы 3 11.11.2010 18:40
Как указать место вставки результата из PHP? ScorpionGhost Общие вопросы 4 11.07.2009 21:02
php 5.2.4 как cgi и templavoila Manas Общие вопросы 2 17.11.2007 20:54
Как получить pid страницы в TS? z0r1k TypoScript практикум 3 21.07.2006 20:23
Как в BE-модуле получить имя активного в данный момент FE-user? KortS Разработка расширений / TYPO3 extension development 1 11.03.2005 21:00


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


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

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