Версия: dle-user-mod
Внимание! Модули сайта находятся в процессе разработки. Функционал доступен частично. МЫ НЕ СТОИМ НА МЕСТЕ, А СТАРАЕМСЯ СДЕЛАТЬ САЙТ УНИКАЛЬНЫМ!
Ограничение функций от сервисов Ucoz является помехой,но мы будем искать варианты, ведь многие функции либо скрыты и не запрещены, Последняя фиксацияРеализуется несколькими вариациями, с созданием отдельных модулей. Их мы и рассмотрим далее!
И так, мы хотим забацать модуль, чтобы он выводил нам из доп-полей не все разом, а только то, что мы попросим, и не только через шаблон, сколько через ПХП. Странно может показаться, мол зачем - думал я когда-то, пока не столкнулся с одним заказом, который включал в себя создание отдельной страницы, где выводится таблица со списком пользователей и их данными. Хорошо, половина данных лежит в Таблице БД, а половина в Доп-Полях. Бд вывести полбеды, а вот отдельное доп поле в отдельную ячейку таблицы - это сложнее. Поковырял я значит просторы Гугла, а Затем Яндекса, и ничего путного не нашел. Придется сражаться своими силами. Если с Таблицами БД все понятно, то с доп-полями полная жо.... стоп-стоп-стоп! Ведь за подобный вывод доп-полей отвечает один и тот-же код, вписанный во многих файлах! А еще, раз работа будет с упором на пользователей, и по сути будет создана для Админов, то у нас путь вообще простой! Копируем в рабочую папку файл /engine/modules/profile.php...... и модифицируем его под свои нужды! А заодно подключаем свой Шаблон! Это один вариант, а есть второй, создаем кастомный модуль, впихиваем в него по очереди необходимые исходники, прописываем пути к бд, назначаем шаблон, ну и для обоих случаев привязываем его к engine.php Давайте по порядку, господа! Вариант 1: Модернизация файла /engine/modules/profile.php Нам необходим тот самый участок кода, что выводит нам информацию из доп-полей через скобки {xfields} - вот он: Код $xfieldsid = stripslashes( $row['xfields'] ); $xfieldsaction = "init"; $xfieldsadd = false; include (DLEPlugins::Check(ENGINE_DIR . '/inc/userfields.php')); $filecontents = array (); if( !empty( $postedxfields ) ) { foreach ( $postedxfields as $xfielddataname => $xfielddatavalue ) { if( trim($xfielddatavalue) == "" ) { continue; } $xfielddatavalue = $db->safesql( $parse->BB_Parse( $parse->process( trim($xfielddatavalue) ), false ) ); $xfielddataname = $db->safesql( str_replace( $not_allow_symbol, '', $xfielddataname) ); $xfielddataname = str_replace( "|", "|", $xfielddataname ); $xfielddatavalue = str_replace( "|", "|", $xfielddatavalue ); $filecontents[] = "$xfielddataname|$xfielddatavalue"; } $filecontents = implode( "||", $filecontents ); } else $filecontents = ''; Далее нам пригодятся еще несколько моментов в файле, это привязка к файлу шаблона: А мы ведь будем запиливать с вами свой! Код $tpl->load_template( 'userinfo.tpl' ); В первом участке кода указан путь к файлу /inc/userfields.php, отвечающему за основной движок полей, по нему пройдемся позже! Код include (DLEPlugins::Check(ENGINE_DIR . '/inc/userfields.php')); и Участок кода, активирующего код полей в скобках, для вывода в шаблоне! Код $xfieldsaction = "list"; $xfieldsadd = false; $xfieldsid = $row['xfields']; include (DLEPlugins::Check(ENGINE_DIR . '/inc/userfields.php')); $tpl->set( '{xfields}', $output ); if ( count( $xfieldinput ) ) { foreach ( $xfieldinput as $key => $value ) { $tpl->copy_template = str_replace( "[xfinput_{$key}]", $value, $tpl->copy_template ); } } $xfieldsdata = xfieldsdataload( $row['xfields'] ); foreach ( $xfields as $value ) { $preg_safe_name = preg_quote( $value[0], "'" ); if( !isset($xfieldsdata[$value[0]]) ) $xfieldsdata[$value[0]] = ''; if($xfieldsdata[$value[0]] == "") $xfgiven = false; else $xfgiven = true; if( $value[5] != 1 OR ($is_logged AND $member_id['user_group'] == 1) OR ($is_logged AND $member_id['user_id'] == $row['user_id']) ) { if( !$xfgiven ) { $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template ); $tpl->copy_template = str_replace( "[xfnotgiven_{$value[0]}]", "", $tpl->copy_template ); $tpl->copy_template = str_replace( "[/xfnotgiven_{$value[0]}]", "", $tpl->copy_template ); } else { $tpl->copy_template = preg_replace( "'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template ); $tpl->copy_template = str_replace( "[xfgiven_{$value[0]}]", "", $tpl->copy_template ); $tpl->copy_template = str_replace( "[/xfgiven_{$value[0]}]", "", $tpl->copy_template ); } $tpl->set( "[xfvalue_{$value[0]}]", stripslashes( $xfieldsdata[$value[0]] )); } else { $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template ); $tpl->copy_template = preg_replace( "'\\[xfvalue_{$preg_safe_name}\\]'i", "", $tpl->copy_template ); $tpl->copy_template = preg_replace( "'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template ); } } С первым пунктом вводной части мы разабрались! Данные выбраные участки кода актуальны в нашем случае, как и для отдельного модуля с подключением, так и с модификацией имеющегося файла Уважаемые пользователи! Копирование новостей разрешено только с указанием ссылки на данную новость на другом сайте. При обнаружении нарушения будут приняты меры, связанные с защитой авторских прав по пункту законов о плагиате и нарушении авторских прав. На сайте используются только оригинальные материалы, без копирования из других источников. Все скрипты и коды здесь - наши авторские работы. Чужие работы мы бережно выносим на отдельные html странички, со ссылками на оригинальный материал. ПРИМЕРУважайте чужой труд! | |
Категория: разработки DLE 15 | | | |
Комментарии: 6 |
Всего комментариев: 6 | |
| |