我想创建一个小项目。在joomla用户页面中,用户可以选择标题/封面背景。他们无法上传图片,他们只能选择我已经上传到服务器文件夹中的背景图片。
所以我需要后端提供类似的东西:
<form action="index.php" method="post" enctype="multipart/form-data">
<select>
<option value="1">Background image 1</option>
<option value="2">Background image 2</option>
<option value="3">Background image 3</option>
<option value="4">Background image 4</option>
</select>
<button type="submit">Change header</button>
</form>
然后根据值显示背景:
<?php
if ($user_profile->headerbackground==1) {
echo '<img src="link" />';
}else if ($user_profile->headerbackground==2) {
echo '<img src="link" />';
}else if ($user_profile->headerbackground==3){
echo '<img src="link" />';
}
?>
在数据库中,我可以在右侧的Joomla用户个人资料表中创建一个名为“ headerbackground”的新列。在此列中,数据库将仅根据所选选项保存1,2,3,4 ...之类的值。
希望有人可以帮助我。
答案 0 :(得分:0)
在您的模板替代中尝试此操作。除了循环之外,我仅获取一个特定的字段,因此您可能必须根据值调整[1]。
模板替代文件顶部:
JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); //load fields helper
然后再
$customFieldnames = FieldsHelper::getFields('com_users.user',JFactory::getUser(), true); // get custom field names by user id
$customFieldIds = array_map(create_function('$o', 'return $o->id;'), $customFieldnames); //get custom field Ids by custom field names
$model = JModelLegacy::getInstance('Field', 'FieldsModel', array('ignore_request' => true)); //load fields model
$customFieldValues = $model->getFieldValues($customFieldIds , $item['id']); //Fetch values for custom field Ids
$background_image = $customFieldValues[1];
if($background_image == 1) {
echo '<img src="images/Fornite.jpg" />';
} elseif($background_image == 2) {
echo '<img src="images/Blue.jpg" />';
} elseif($background_image == 3) {
echo '<img src="images/Black.jpg" />';
} else {
echo '<img src="images/whatever.jpg" />';
}
我更新了,因为您只是存储数字值而不是图像路径。如果这不起作用,则需要回显$ background_image以查看其要提取的值。
查看您的截屏视频,我不确定您正在使用$ background_image-> default_value做什么,这可能是问题所在。