Joomla создать список выбора опций, который сохраняет данные в базу данных (из профиля пользователя)
Я хочу создать небольшой проект. На странице пользователя 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... в зависимости от выбранной опции.
Надеюсь, кто-нибудь может мне помочь.
1 ответ
Попробуйте это в вашем шаблоне переопределить. Вместо зацикливания я просто беру одно конкретное поле, поэтому вам может потребоваться настроить [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, возможно, это проблема.