Перейти к публикации

Информация о пользователе на отдельной странице


Рекомендованные сообщения

Добрый день, помогите найти ошибку.

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

Вывести все его данные получилось, однако с доп. полями проблема.

Не могу найти ошибку:

include (ENGINE_DIR . '/inc/userfields.php');
if (strpos($tpl->copy_template, "[ufvalue_") !== false) {
	$xfieldsdata = xfieldsdataload( $userField['xfields'] );
	
	foreach ( $xfields as $value ) {

		$preg_safe_name = preg_quote( $value[0], "'" );
		
		if($xfieldsdata[$value[0]] == "") $ufgiven = false; else $ufgiven = true;
		
		if( $value[5] != 1 ) {

			if( !$ufgiven ) {

				$tpl->copy_template = preg_replace( "'\\[ufgiven_{$preg_safe_name}\\](.*?)\\[/ufgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[ufnotgiven_{$value[0]}]", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[/ufnotgiven_{$value[0]}]", "", $tpl->copy_template );

			} else {

				$tpl->copy_template = preg_replace( "'\\[ufnotgiven_{$preg_safe_name}\\](.*?)\\[/ufnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[ufgiven_{$value[0]}]", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[/ufgiven_{$value[0]}]", "", $tpl->copy_template );

			}

			$tpl->copy_template = preg_replace( "'\\[ufvalue_{$preg_safe_name}\\]'i", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );

		} else {

			$tpl->copy_template = preg_replace( "'\\[ufgiven_{$preg_safe_name}\\](.*?)\\[/ufgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
			$tpl->copy_template = preg_replace( "'\\[ufvalue_{$preg_safe_name}\\]'i", "", $tpl->copy_template );
			$tpl->copy_template = preg_replace( "'\\[ufnotgiven_{$preg_safe_name}\\](.*?)\\[/ufnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );

		}

	}
}

код взял из engine/modules/profile.php

$preg_safe_name выводит все названия полей — слитно

$xfieldsdata[$value[0]] - выводит данные поля и название поля — слитно

однако в шаблоне [ufvalue_pole] — пусто.

Что делаю не так?

Версия dle 12.0

Ссылка на сообщение
Поделиться на других сайтах

@Gameer так было в модуле UserBox, но он перестал работать, вернее доп. поля стали пустыми, хотя движок не обновлял, я его немного переписал под себя, но вот доп. поля так и не выводятся...

через print_r( $xfieldsdata[$value[0]] ); данные из полей выводятся ( Muster Str.str1haus12345plzBerlinstadt0176123456789tel ) а через [ufvalue_pole]  нет.

Ссылка на сообщение
Поделиться на других сайтах
Только что, odys сказал:

@Gameer так было в модуле UserBox, но он перестал работать, вернее доп. поля стали пустыми, хотя движок не обновлял, я его немного переписал под себя, но вот доп. поля так и не выводятся...

через print_r( $xfieldsdata[$value[0]] ); данные из полей выводятся ( Muster Str.str1haus12345plzBerlinstadt0176123456789tel ) а через [ufvalue_pole]  нет.

Я только что проверил у себя на отдельной странице, все работает как я описал выше.

Вот мой полный код с отдельной страницы.

<?php
$tpl->load_template('u.tpl');
if (strpos($tpl->copy_template, "[ufvalue_") !== false) {
    $xfields = xfieldsload(true);
    
	$xfieldsdata = xfieldsdataload($member_id['xfields']);
	
	foreach ( $xfields as $value ) {

		$preg_safe_name = preg_quote( $value[0], "'" );
		
		if($xfieldsdata[$value[0]] == "") $ufgiven = false; else $ufgiven = true;
		
		if( $value[5] != 1 ) {

			if( !$ufgiven ) {

				$tpl->copy_template = preg_replace( "'\\[ufgiven_{$preg_safe_name}\\](.*?)\\[/ufgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[ufnotgiven_{$value[0]}]", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[/ufnotgiven_{$value[0]}]", "", $tpl->copy_template );

			} else {

				$tpl->copy_template = preg_replace( "'\\[ufnotgiven_{$preg_safe_name}\\](.*?)\\[/ufnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[ufgiven_{$value[0]}]", "", $tpl->copy_template );
				$tpl->copy_template = str_replace( "[/ufgiven_{$value[0]}]", "", $tpl->copy_template );

			}

			$tpl->copy_template = preg_replace( "'\\[ufvalue_{$preg_safe_name}\\]'i", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );

		} else {

			$tpl->copy_template = preg_replace( "'\\[ufgiven_{$preg_safe_name}\\](.*?)\\[/ufgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
			$tpl->copy_template = preg_replace( "'\\[ufvalue_{$preg_safe_name}\\]'i", "", $tpl->copy_template );
			$tpl->copy_template = preg_replace( "'\\[ufnotgiven_{$preg_safe_name}\\](.*?)\\[/ufnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );

		}

	}
}

$tpl->compile('content');
$tpl->clear();

ULt1ZpgTTVSjgaqQ5Zscng.png

rHZb-3_DRTaXgvOdsQ9okQ.png

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Gameer сказал:

Я только что проверил у себя на отдельной странице, все работает как я описал выше.

это то и странно, у меня тоже по отдельности работает, а вот если взять весь код целиком из модуля UserBox https://github.com/dle-modules/DLE-UserBox/blob/master/engine/modules/userbox.php

то не работает и не работает именно в шаблоне addnews.tpl, в новостях доп. поля выводятся... У разработчика не спрашиваю, т.к. у него уже спрашивали, он написал мол создайте Issues на github, но так и не ответил.

Ладно, @Gameer спасибо тебе за попытку помочь. Очень благодарен, буду сегодня вечером дальше ковырять, попробую не брать весь код, а вырезать только нужную мне часть.

Ссылка на сообщение
Поделиться на других сайтах

@Gameer не знаю что и как, но вот так работает

if (strpos($tpl->copy_template, "[ufvalue_") !== false) {
					$xfields     = xfieldsload(true);
					$xfieldsdata = xfieldsdataload($userField['xfields']);
					
					foreach ($xfields as $value) {
						$preg_safe_name = preg_quote($value[0], "'");
						$tpl->copy_template = preg_replace("'\\[ufvalue_{$preg_safe_name}\\]'i", stripslashes($xfieldsdata[$value[0]]), $tpl->copy_template);
					}
				}

вырезал все эти if и else, оставив только формирование ufvalue и всё норм, выводит то, что нужно и нормально B)

Ссылка на сообщение
Поделиться на других сайтах
13 минут назад, odys сказал:

@Gameer не знаю что и как, но вот так работает


if (strpos($tpl->copy_template, "[ufvalue_") !== false) {
					$xfields     = xfieldsload(true);
					$xfieldsdata = xfieldsdataload($userField['xfields']);
					
					foreach ($xfields as $value) {
						$preg_safe_name = preg_quote($value[0], "'");
						$tpl->copy_template = preg_replace("'\\[ufvalue_{$preg_safe_name}\\]'i", stripslashes($xfieldsdata[$value[0]]), $tpl->copy_template);
					}
				}

вырезал все эти if и else, оставив только формирование ufvalue и всё норм, выводит то, что нужно и нормально B)

А пробовал убирать 

if( $value[5] != 1 ) {

Это проверка на личное ли поле или нет. Если личное то выводить данные не будет.

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Gameer сказал:

А пробовал убирать

не, не пробовал, мне и не нужна эта проверка, сайт компании и этот вывод делаю только при добавлении новостей сотрудниками, добавление доступно только для них в доп. полях только их данные, которые передаю в доп. поля новости...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...