让我们看看......从哪里开始?好的,是的,我正在使用 Joomla 并尝试修改名为 JomSocial 的 Joomla 组件中的一些代码。我未能做到这一点并不是基于了解组件或 Joomla 系统中发生了什么,只是因为我无法很好地阅读 PHP 代码来修改正在发生的事情。
本质上,此脚本会输出来自选定用户的所有配置文件信息位的定义列表。这很好,但我需要在站点的不同部分重复使用此代码,我只想使用一个或两个字段,而不是整个用户配置文件字段数组。
我在这里包含了脚本中的大部分代码,但我真的觉得我寻求的答案要简单得多,而且只是一般的 PHP 知识。具体来说,我将如何回显 foreach 语句所显示的字段数组。
如果这是你们中的任何人都愿意提供帮助的事情,那太棒了。如果在一般 PHP 问题部分解决了这个问题,那么链接也很棒。我尝试在 PHP 答案中搜索类似的内容,但似乎没有人在做我在这里要求的事情。
同样,我真正需要的是能够完成这段代码正在做的事情,只需通过迭代单个字段来完成它,而不是通过转储每个字段。
非常感谢,Thomas Harrison, 我敬畏地看着你。
<?php foreach( $profile['fields'] as $groupName => $items ):
// Gather display data for the group. If there is no data, we can
// later completely hide the whole segment
$hasData = false;
ob_start();
?>
<div class="cProfile-About">
<?php if( $groupName != 'ungrouped' ): ?>
<h4><?php echo JText::_( $groupName ); ?></h4>
<?php endif; ?>
<dl class="profile-right-info">
<?php foreach( $items as $item ): ?>
<?php
if( CPrivacy::isAccessAllowed( $my->id , $profile['id'] , 'custom' , $item['access'] ) )
{
// There is some displayable data here
$hasData = true;
?>
<dt><?php echo JText::_( $item['name'] ); ?></dt>
<?php if( !empty($item['searchLink']) && is_array($item['searchLink']) ): ?>
<dd>
<?php foreach($item['searchLink'] as $linkKey=>$linkValue): ?>
<?php $item['value'] = $linkKey; ?>
<a href="<?php echo $linkValue; ?>"><?php echo CProfileLibrary::getFieldData( $item ) ?></a><br />
<?php endforeach; ?>
</dd>
<?php else: ?>
<dd>
<?php if(!empty($item['searchLink'])) :?>
<a href="<?php echo $item['searchLink']; ?>">
<?php endif; ?>
<?php echo CProfileLibrary::getFieldData( $item ); ?>
<?php if(!empty($item['searchLink'])) :?>
</a>
<?php endif; ?>
</dd>
<?php endif; ?>
<?php
}
?>
<?php endforeach; ?>
</dl>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
// We would only display the profile data in the group if there is actually some
// data to be displayed
if( $hasData ):
echo $html;
$noData = false;
endif;
endforeach;
if ($noData)
echo ($isMine) ? JText::_('COM_COMMUNITY_PROFILES_SHARE_ABOUT_YOURSELF') : JText::_('COM_COMMUNITY_PROFILES_NO_INFORMATION_SHARE');
?>