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

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

Ответ
 
Опции темы Опции просмотра
Старый 16.04.2010, 19:12   #1
gvv100
Новенький
 
Регистрация: 04.12.2009
Сообщений: 9
По умолчанию userFunc и параметры

Народ, может кто подскажет как в свою пользовательскую функцию (userFunc) передать значение поля?
Ситуация такая - в новостях есть дополнительные поля, одно из них хранит код клиента, который берется из списка fe_users. Задача такая - вывести в единичной новости название клиента, зная его код.

Пока родил следующее и оно работает :

includeLibs.myFunc = fileadmin/templates/userfunc/func.php

page.1 = LOAD_REGISTER
page.1{
storage_pids.cObject = USER
storage_pids.cObject{
userFunc = user_func->getUserNameById
#задаем id клиента через константу
user_id = 140;
#задаем id клиента через значение в дополнительном поле
#user_id = {field:tx_ttnews_client_id}
}
}
# выводим имя клиента
page.5 = TEXT
page.5.data = register:storage_pids

Но как передать значение поля - tx_ttnews_client_id вот в чем вопрос!
gvv100 вне форума   Ответить с цитированием
Старый 17.04.2010, 00:27   #2
reva2
Senior Member
 
Аватар для reva2
 
Регистрация: 31.08.2007
Адрес: Ростов-на-Дону
Сообщений: 206
По умолчанию

Для подобных вещей в tt_news предусмотрены хуки.
Смотри это и используем хук getItemMarkerArray()
reva2 вне форума   Ответить с цитированием
Старый 20.04.2010, 19:35   #3
gvv100
Новенький
 
Регистрация: 04.12.2009
Сообщений: 9
Unhappy userFunc и параметры

Спасибо! Наконец-то разобрался как это работает.
Сейчас это выглядит уже так:

TS
includeLibs.myFunc = fileadmin/templates/userfunc/func.php
plugin.tt_news.itemMarkerArrayFunc = user_func->user_ClientNameById

plugin.tt_news{
newsClients_stdWrap.wrap = <div class="client_info"><span>Клиент:</span><p><strong>|</strong></p></div>
}

PHP
<?php
class user_func{
function user_ClientNameById($markerArray, $conf){
$row = $conf['parentObj']->local_cObj->data; // get the data array of the current news record
//t3lib_div::debug($markerArray);
//t3lib_div::debug($row);

if ($row['tx_addfiledttnews_client']){
$clientsArr = explode(',',$row['tx_addfiledttnews_client']);
$cnt = 0;
while(list(,$val) = each($clientsArr)) {
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('name','fe_users','uid='.$val,'' ,'','');
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
$markerArray['###NEWS_CLIENT###'] .= $conf['parentObj']->local_cObj->stdWrap($row['name'], $conf['parentObj']->conf['newsClients_stdWrap.']);
$cnt = $cnt + 1;
}
} else {
$markerArray['###NEWS_CLIENT###']='';
}

return $markerArray;

} // end user_ClientNameById

}
?>

Прекрасно работает, НО!

Не могу понять как сделать вывод двух подобных дополнительных полей? Когда я пишу еще одну PHP функцию, которая делает примерно тоже самое - достает по коду еще одно имя, а потом пытаюсь вызвать её из TS, то работает только та функция, которая вызывалась последней.

Выглядит это вот так:
includeLibs.myFunc = fileadmin/templates/userfunc/func.php
plugin.tt_news.itemMarkerArrayFunc = user_func->user_ClientNameById
plugin.tt_news.itemMarkerArrayFunc = user_func->user_CustomerNameById

Результат user_CustomerNameById - виден, а результат user_ClientNameById нет.

Как сделать, чтобы эти две функции работали нормально вместе?
gvv100 вне форума   Ответить с цитированием
Старый 21.04.2010, 19:08   #4
Nobody
Продвинутый
 
Регистрация: 21.03.2010
Сообщений: 33
По умолчанию

Цитата:
Выглядит это вот так:
includeLibs.myFunc = fileadmin/templates/userfunc/func.php
plugin.tt_news.itemMarkerArrayFunc = user_func->user_ClientNameById
plugin.tt_news.itemMarkerArrayFunc = user_func->user_CustomerNameById
Второе переписывает первое. TypoScript – не язык программирования! Любое следующее присваивание переписывает предыдущее. Сделайте одну фукцию и всё.

А первый пост я вообще не понял. Проще было бы, если бы описали что хотите добиться.
Nobody вне форума   Ответить с цитированием
Старый 21.04.2010, 19:30   #5
gvv100
Новенький
 
Регистрация: 04.12.2009
Сообщений: 9
По умолчанию

Спасибо за совет. Именно так я и поступил - все получилось.

По поводу первого поста поясню более понятно...
На Новости может быть "навешена" куча дополнительных полей. Хорошо если эти поля содержат просто текст, который нужно потом вывести на странице сайта. Но некоторые поля могут содержать коды других записей в БД. Вот вопрос в этом и заключался - как по коду получить описание (name или title какой-нибудь).

Вот сейчас по коду клиента научился доставать его наименование из таблицы fe_users. Теперь думаю как лучше и красивее вывести все категории к которым новость относится? Точно таким же образом?
gvv100 вне форума   Ответить с цитированием
Ответ

Теги
userfunc


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
языковое меню и GET параметры werewolf TypoScript практикум 0 14.05.2009 18:36
Передача параметров в userFunc c0d3r TypoScript практикум 10 15.05.2007 16:19
userFunc и user_* c0d3r TypoScript практикум 4 11.05.2007 15:18
Параметры картинки Limer =) Общие вопросы 7 06.04.2007 16:53
как выбрать параметры с конфигурации? EugeneM TypoScript практикум 6 07.03.2007 19:55


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


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

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