![]() |
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 вот в чем вопрос! |
Для подобных вещей в tt_news предусмотрены хуки.
Смотри это и используем хук getItemMarkerArray() |
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 нет. Как сделать, чтобы эти две функции работали нормально вместе? |
Цитата:
А первый пост я вообще не понял. Проще было бы, если бы описали что хотите добиться. |
Спасибо за совет. Именно так я и поступил - все получилось.
По поводу первого поста поясню более понятно... На Новости может быть "навешена" куча дополнительных полей. Хорошо если эти поля содержат просто текст, который нужно потом вывести на странице сайта. Но некоторые поля могут содержать коды других записей в БД. Вот вопрос в этом и заключался - как по коду получить описание (name или title какой-нибудь). Вот сейчас по коду клиента научился доставать его наименование из таблицы fe_users. Теперь думаю как лучше и красивее вывести все категории к которым новость относится? Точно таким же образом? |
Часовой пояс GMT +4, время: 05:35. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot