Ремонт компьютера
Сборка, чистка, апгрейт ремонт любой техники.
Замена частей, установка ПО, установка Windows, антивируса.
Удаленная помощь без вызова на дом.
Создание сайта
Создание сайта с нуля, модулей, скриптов для сайта.
Движки Joomla, Wordpress, Opencart, Prestashop и тд.
SEO продвижение, ремонт, оптимизация сайта.

Простой модуль баннеров на bootstap for modx

Увидел стандартный код вывода баннера, и хотелось плакать, сказали чтоб все работало, потому пришлось сие чудо сначало оживить а потом приукрасить. Я и сделал простой модуль баннеров на bootstap for modx.

Баннеры

Вот код самого модуля, создаем новый и вставляем такой код

$bd='`banners`';
$bd2='banners';
$pagedef=1;

$basepath=$modx->config['base_path'].'assets/images/banner/';
$urlpath='/assets/images/banner/';


//css
echo '<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<style>
.custom-file-input ~ .custom-file-label::after {
    content: "Выберете файлы";
}
</style>
<br>';

// работает ли таблица
$sqlQuery = "SELECT * FROM $bd LIMIT 1";
$iftable = mysql_query($sqlQuery);

if (isset($_POST['save']) && $_POST['save'] != '') {
	$sqlQuery = "UPDATE $bd SET filename = '".$_POST['filename']."', url = '".$_POST['url']."', pages = '".$_POST['pages']."', alt = '".$_POST['alt']."' WHERE id = ".$_POST['rowid'];
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		bsuccess('Данные сохранены.');
	} else {
		balerts('Ошибка записи в БД');
	}
}



if (isset($_POST['dropbd']) && $_POST['dropbd'] != '') {
	$sqlQuery = "DROP TABLE $bd";
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		bsuccess('Таблица удалена.');
	} else {
		balerts('Не могу удалить таблицу в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}
}

if (isset($_POST['createbd']) && $_POST['createbd'] != '') {
	$sqlQuery = "
CREATE TABLE IF NOT EXISTS  $bd (
    `id` int(10) unsigned NOT NULL,
  `filename` varchar(255) DEFAULT NULL,
    `url` text DEFAULT NULL,
    `pages` int(10) DEFAULT NULL,
    `alt` varchar(255) DEFAULT NULL
);

";
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		bsuccess('Таблица создана.</p>');
	} else {
		balerts('Не могу создать таблицу в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}
$sqlQuery=" ALTER TABLE $bd
 ADD PRIMARY KEY (`id`);";
$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		echo bsuccess('Ключи таблицы.');
	} else {
		balerts('Не могу создать ключи таблицы в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}

$sqlQuery="
ALTER TABLE $bd
 MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=10;";
$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		echo bsuccess('Ключи таблицы.');
	} else {
		balerts('Не могу создать ключи таблицы в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}

}

if (isset($_POST['delete']) && $_POST['delete'] != '') {
	$sqlQuery = "DELETE FROM $bd WHERE id = ".$_POST['rowid'];
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		echo bsuccess('Картинка удалена.</p>');
	} else {
		balerts('Ошибка записи в БД.</p>');
	}
}

function balerts($str,$strong=''){
	echo'<div class="alert alert-warning alert-dismissible fade show" role="alert">
	  <strong>'.$strong.'</strong>'.$str.'
	  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
		<span aria-hidden="true">&times;</span>
	  </button>
	</div>';
}
function bsuccess($str,$strong=''){
	echo'<div class="alert alert-success alert-dismissible fade show" role="alert">
	  <strong>'.$strong.'</strong>'.$str.'
	  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
		<span aria-hidden="true">&times;</span>
	  </button>
	</div>';
}

if (isset($_POST['load']) && $_POST['load'] != '') {
  $arrFileTmp=$_FILES['file']['tmp_name'];
$arrFile=$_FILES['file']['name'];
$errors=$_FILES['file']["error"];
// создаем папку бд
if (!is_dir ($basepath))
  if (mkdir ($basepath))
   balerts('Создал папку'.$basepath);
 else
   balerts('Не смог создать папку'.$basepath);

// перебор всех файлов
foreach ($errors as $key => $error) 
 if ($error == UPLOAD_ERR_OK) {
$file=$arrFile[$key];
$tmp=$arrFileTmp[$key];
//exit(var_dump($file));
	if (isset($file) && $file != "") {
$base=basename($file);
//bsuccess('Перемещаю файл ('.$tmp.') в '.$basepath.$file);
		if (move_uploaded_file($tmp, $basepath.$file)) {
			$sqlQuery = "INSERT INTO $bd (`filename`, `url`, `pages`, `alt`) VALUES ('$base', '$urlpath.$file', '$pagedef', '$base')";
			$result = mysql_query($sqlQuery);
			if ($result) {
				$modx->clearCache();
				bsuccess('Запись добавлена.('.$base.')');
			} else {
				balerts('Ошибка записи в БД. '.$sqlQuery);
			}
		} else {
			balerts('Ошибка перемещения файла.('.$file.')');
		}
	} else {
		balerts('Ошибка загрузки файла.');
	}
   }
}

if($iftable)
echo '
<form action="#" class=" m-4" method="POST" enctype="multipart/form-data">

<div class="input-group">
  <div class="input-group-prepend">
    <span class="input-group-text" >Добавить баннер:</span>
  </div>
<div class="input-group-append">
<input class="input-group-text"  style="background-color:#fff" type="file" min="1" max="9999" name="file[]" multiple="true" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01" />
</div>
<div class="input-group-append">
    <input class="btn btn-primary" type="submit" name="load" value="Загрузить">
  </div>
</div>

</form>

';


$sqlQuery = "SELECT * FROM $bd";
$result = mysql_query($sqlQuery);
if (!$result) {
	balerts('Ошибка чтения из БД. Создайте таблицу!!');
} else if (mysql_num_rows($result) == 0) {
	balerts('Запрос к БД вернул пустой результат.');
} else {
echo '
<table class="table table-hover table-striped table-sm" >
	<thead class="thead-dark" style="background-color:#666;color:white">
       <td width="30px">Картинка</td>
		<td width="30px">id</td>
		<td width="150px">Имя файла</td>
		<td width="200px">Ссылка</td>
		<td width="200px">Страницы (id через запятую)</td>
		<td width="200px">Текст alt</td>
		<td width="30px">Действия</td>
		<td width="30px"></td>
	</thead><tbody>
';

	while ($row = mysql_fetch_array($result)) {
		echo '
	<form action="#" method="POST">
	<input type="hidden" name="rowid" value="'.$row['id'].'" />
	<tr>
          <td ><img src="'.$urlpath.$row['filename'].'" alt="" width="100px" /></td>
		<td>'.$row['id'].'</td>
		<td><input type="text" class="form-control" name="filename" value="'.$row['filename'].'" size="20" /></td>
		<td><input type="text" class="form-control" name="url" value="'.$row['url'].'" size="28" /></td>
		<td><input type="text" class="form-control" name="pages" value="'.$row['pages'].'" size="28" /></td>
		<td><input type="text" class="form-control" name="alt" value="'.$row['alt'].'" size="28" /></td>
		<td><input type="submit" class="btn btn-success" name="save" value="Сохранить" /></td>
		<td><input type="submit" class="btn btn-danger" name="delete" value="Удалить" /></td>
	</tr>
	</form>
		';
	}
}
echo '</tbody></table>';
echo '<ul class="list-group m-3">
  <li class="list-group-item">Путь к файлам:'.$basepath.'</li>
</ul>';

/*
if ($iftable)
  echo '<form action="" method="POST">
        <input type="submit" class="btn btn-danger btn-sm" style=""  name="dropbd" value="Удалить таблицу" />
  </form>
'; 
else
  echo '<form action="" method="POST">
	<input type="submit" class="btn btn-success btn-sm" style=""  name="createbd" value="Создать новую таблицу" />
  </form>
'; */

//js
echo '<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>';

А вот код его вывода, понятно что на каких id отметим наши баннеры на тех и будет отображаться.

<?php
$siteUrl = $modx->config['site_url'];
$sqlQuery = "SELECT * FROM banners";
$result = mysql_query($sqlQuery);
//exit(var_dump($id));
if ($result) {
	while ($row = mysql_fetch_array($result)) {
		if ($row['pages'] != '') {
			$pages = explode(',', $row['pages']);
			foreach($pages as $singlePage) {
				if (trim($singlePage) == $id) {
					echo '<div class="main_banner"><a href="'.($row['url'] != '' ? $row['url'] : '#').'"><img src="assets/images/banner/'.$row['filename'].'" alt="'.($row['alt'] != '' ? $row['alt'] : '').'" /></a></div>';
				}
			}
		}
	}
}
?>

Слайдер на главную

Ну и по тому же принципу сделал и для слайдера модуль, просто поменял 2 строчки. И теперь он создает отдельную таблицу banner_home и приставку таблицы в пути в которой хранит наши файлики.

$bd='`banner_home`';
$bd2='banner_home';
$pagedef=1;
$basepath=$modx->config['base_path'].'assets/images/banner/'.$bd2.'/';
$urlpath='/assets/images/banner/'.$bd2.'/';


//css
echo '<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<style>
.custom-file-input ~ .custom-file-label::after {
    content: "Выберете файлы";
}
</style>
<br>';

// работает ли таблица
$sqlQuery = "SELECT * FROM $bd LIMIT 1";
$iftable = mysql_query($sqlQuery);

if (isset($_POST['save']) && $_POST['save'] != '') {
	$sqlQuery = "UPDATE $bd SET filename = '".$_POST['filename']."', url = '".$_POST['url']."', pages = '".$_POST['pages']."', alt = '".$_POST['alt']."' WHERE id = ".$_POST['rowid'];
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		bsuccess('Данные сохранены.');
	} else {
		balerts('Ошибка записи в БД');
	}
}



if (isset($_POST['dropbd']) && $_POST['dropbd'] != '') {
	$sqlQuery = "DROP TABLE $bd";
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		bsuccess('Таблица удалена.');
	} else {
		balerts('Не могу удалить таблицу в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}
}

if (isset($_POST['createbd']) && $_POST['createbd'] != '') {
	$sqlQuery = "
CREATE TABLE IF NOT EXISTS  $bd (
    `id` int(10) unsigned NOT NULL,
  `filename` varchar(255) DEFAULT NULL,
    `url` text DEFAULT NULL,
    `pages` int(10) DEFAULT NULL,
    `alt` varchar(255) DEFAULT NULL
);

";
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		bsuccess('Таблица создана.</p>');
	} else {
		balerts('Не могу создать таблицу в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}
$sqlQuery=" ALTER TABLE $bd
 ADD PRIMARY KEY (`id`);";
$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		echo bsuccess('Ключи таблицы.');
	} else {
		balerts('Не могу создать ключи таблицы в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}

$sqlQuery="
ALTER TABLE $bd
 MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=10;";
$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		echo bsuccess('Ключи таблицы.');
	} else {
		balerts('Не могу создать ключи таблицы в БД. '.$sqlQuery.'-><br>'.mysql_error());
	}

}

if (isset($_POST['delete']) && $_POST['delete'] != '') {
	$sqlQuery = "DELETE FROM $bd WHERE id = ".$_POST['rowid'];
	$result = mysql_query($sqlQuery);
	if ($result) {
		$modx->clearCache();
		echo bsuccess('Картинка удалена.</p>');
	} else {
		balerts('Ошибка записи в БД.</p>');
	}
}

function balerts($str,$strong=''){
	echo'<div class="alert alert-warning alert-dismissible fade show" role="alert">
	  <strong>'.$strong.'</strong>'.$str.'
	  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
		<span aria-hidden="true">&times;</span>
	  </button>
	</div>';
}
function bsuccess($str,$strong=''){
	echo'<div class="alert alert-success alert-dismissible fade show" role="alert">
	  <strong>'.$strong.'</strong>'.$str.'
	  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
		<span aria-hidden="true">&times;</span>
	  </button>
	</div>';
}

if (isset($_POST['load']) && $_POST['load'] != '') {
  $arrFileTmp=$_FILES['file']['tmp_name'];
$arrFile=$_FILES['file']['name'];
$errors=$_FILES['file']["error"];
// создаем папку бд
if (!is_dir ($basepath))
  if (mkdir ($basepath))
   balerts('Создал папку'.$basepath);
 else
   balerts('Не смог создать папку'.$basepath);

// перебор всех файлов
foreach ($errors as $key => $error) 
 if ($error == UPLOAD_ERR_OK) {
$file=$arrFile[$key];
$tmp=$arrFileTmp[$key];
//exit(var_dump($file));
	if (isset($file) && $file != "") {
$base=basename($file);
//bsuccess('Перемещаю файл ('.$tmp.') в '.$basepath.$file);
		if (move_uploaded_file($tmp, $basepath.$file)) {
			$sqlQuery = "INSERT INTO $bd (`filename`, `url`, `pages`, `alt`) VALUES ('$base', '$urlpath.$file', '$pagedef', '$base')";
			$result = mysql_query($sqlQuery);
			if ($result) {
				$modx->clearCache();
				bsuccess('Запись добавлена.('.$base.')');
			} else {
				balerts('Ошибка записи в БД. '.$sqlQuery);
			}
		} else {
			balerts('Ошибка перемещения файла.('.$file.')');
		}
	} else {
		balerts('Ошибка загрузки файла.');
	}
   }
}

if($iftable)
echo '
<form action="#" class=" m-4" method="POST" enctype="multipart/form-data">

<div class="input-group">
  <div class="input-group-prepend">
    <span class="input-group-text" >Добавить баннер:</span>
  </div>
<div class="input-group-append">
<input class="input-group-text" style="background-color:#fff" type="file" min="1" max="9999" name="file[]" multiple="true" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01" />
</div>
<div class="input-group-append">
    <input class="btn btn-primary" type="submit" name="load" value="Загрузить">
  </div>
</div>

</form>

';





$sqlQuery = "SELECT * FROM $bd";
$result = mysql_query($sqlQuery);
if (!$result) {
	balerts('Ошибка чтения из БД. Создайте таблицу!!');
} else if (mysql_num_rows($result) == 0) {
	balerts('Запрос к БД вернул пустой результат.');
} else {
echo '
<table class="table table-hover table-striped table-sm" >
	<thead class="thead-dark" style="background-color:#666;color:white">
       <td width="30px">Картинка</td>
		<td width="30px">id</td>
		<td width="150px">Имя файла</td>
		<td width="200px">Ссылка</td>
		<td width="200px">Текст alt</td>
		<td width="30px">Действия</td>
		<td width="30px"></td>
	</thead><tbody>
';

	while ($row = mysql_fetch_array($result)) {
		echo '
	<form action="#" method="POST">
	<input type="hidden" name="rowid" value="'.$row['id'].'" />
	<tr>
          <td ><img src="'.$urlpath.$row['filename'].'" alt="" width="100px" /></td>
		<td>'.$row['id'].'</td>
		<td><input type="text" class="form-control" name="filename" value="'.$row['filename'].'" size="20" /></td>
		<td><input type="text" class="form-control" name="url" value="'.$row['url'].'" size="28" /></td>
		<td><input type="text" class="form-control" name="alt" value="'.$row['alt'].'" size="28" /></td>
		<td><input type="submit" class="btn btn-success" name="save" value="Сохранить" /></td>
		<td><input type="submit" class="btn btn-danger" name="delete" value="Удалить" /></td>
	</tr>
	</form>
		';
	}
}
echo '</tbody></table>';
echo '<ul class="list-group m-3">
  <li class="list-group-item">Путь к файлам:'.$basepath.'</li>
</ul>';

if ($iftable)
  echo '<form action="" method="POST">
        <input type="submit" class="btn btn-danger btn-sm" style=""  name="dropbd" value="Удалить таблицу" />
  </form>
'; 
else
  echo '<form action="" method="POST">
	<input type="submit" class="btn btn-success btn-sm" style=""  name="createbd" value="Создать новую таблицу" />
  </form>
'; 

//js
echo '<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>';

Вывод без проверок на страницу

<?php
$bd='`banner_home`';
$bd2='banner_home';

$basepath=$modx->config['base_path'].'assets/images/banner/'.$bd2.'/';
$urlpath='/assets/images/banner/'.$bd2.'/';

echo '<div id="slide-show">';

$siteUrl = $modx->config['site_url'];
$sqlQuery = "SELECT * FROM $bd";
$result = mysql_query($sqlQuery);
if ($result) {
	while ($row = mysql_fetch_array($result)) {
		
echo '<div>
		<a href="'.($row['url'] != '' ? $row['url'] : '#').'">
<img width="720" height="150" src="'.$urlpath.$row['filename'].'" alt="'.($row['alt'] != '' ? $row['alt'] : '').'" 
                      alt="Получить купон" title="Получить купон"/></a>
	</div>';

		
	}
}
echo '</div>';
?>

 

P.s За форматирование не бить, писал на скорую руку, и в редакторе модх, а он без табуляции (пробелами достало потом, а копить с нотпада не вариант).

P.P.s Если нужно красивее, то через bootsrtap улучшайте, буду рад правкам. Можете в комментариях крепить файлы с кодом, чтобы помочь другим.

Название статьи при не правильной раскладке клавиатуры: Ghjcnjq vjlekm ,fyythjd yf bootstap for modx
Если вдруг появилось желание поблагодарить автора,просто нажмите на рекламу чуть ниже, этого будет достаточно :)

Добавить комментарий

Ваш e-mail не будет опубликован.