Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Где и как вы храните настройки сайта?

#1 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0
0

Отправлено 04 Август 2009 - 13:03

Я в mysql создаю таблицу config
где примерно следущие поля

Название сайта | Стартовая страница | email администратора | url сайта | сайт отключен


т.е. всего одна строчка, и для этой строчки отводится таблица, в принципе удобно, но недавно посмотрел как это сделано в WP

ИД | Настройка | Значение

и далее настройки в столбик. Плюсы: настройки можно добавлять прямо из админки. Но когда я так попробовал сделать, оказалось что вытаскивать эти настройки сложнее чем первом способе.

Как, где и в каком виде вы храните настройки сайта?

 

 

  • 0

#2 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 04 Август 2009 - 13:50

В основном храню, как в WP. Иногда в config.php :D

P.S.
А в чем сложность вытаскивания настроек при способе как в WP?

P.S.S.
Ваш способ, мне кажется ужастным :) Целая таблица с одной записью... не хорошо :)
  • 0

#3 Евгений

Евгений
    Topic Starter
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 04 Август 2009 - 13:58

# Вытаскиваем настройки
	$option_query = mysql_query("SELECT * FROM ".PREFIX."option WHERE option_id = 1") or die(mysql_error()); 
	$option = mysql_fetch_array($option_query);

теперь все настройки в массиве $option.

теперь передаем эти настройки в шаблон

display_template('./themes/'.SKIN.'/header.tpl', $option);


ну а там например вывод заголовка

<title><?php echo $template['option_namesite']; ?></title>


т.е.
$option['option_namesite'] - Название сайта
$option['option_email'] - емейл администратора
$option['option_skin'] - скин
и т.д.
---------

у меня не получилось это же самое организовать когда хранил настройки как в WP
  • 0

#4 Евгений

Евгений
    Topic Starter
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 04 Август 2009 - 13:59

P.S.S.
Ваш способ, мне кажется ужастным Целая таблица с одной записью... не хорошо

мне он тоже кажется ужастным))) поэтому я и создал эту тему
  • 0

#5 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 04 Август 2009 - 16:57

<?php
	class Options
	{
		private $dbInfo;
		
		public function __construct($dbHost, $dbUser, $dbPass, $dbName) {
			 $this->dbInfo = array('dbHost' = $dbHost, 'dbUser' = $dbUser, 'dbPass' = $dbPass, 'dbName' = $dbName);
		}
		
		public function getOption($name) {
			$return = '';
			$msConnect = mysql_connect($this->dbInfo['dbHost'], $this->dbInfo['dbUser'], $this->dbInfo['dbPass']) or die(mysql_error());
			mysql_select_db($this->dbInfo['dbName'], $msConnect);
			$res = mysql_query("SELECT * FROM options WHERE name = {$name}", $msConnect);
			if (mysql_num_rows($res) > 0) {
				$row = mysql_fetch_array($res);
				$return = $row['value'];
			}
			mysql_close($msConnect);
			return $return;
		}
		
		public function setOption($name, $value) {
			//// 
		}
		
		public function createOption($name, $value) {
			/////
		}
		
		public function deleteOption($name) {
			////
		}
	}
?>
Ну, я бы написал вроде такого класса, с помощью которого можно было-бы полноценно управлять опциями (для этого осталось описать пару методов). Ну и теперь в шаблоне можно так опции получать:
$options = new Options('localhost', 'root', '', 'mydata');
	display_template('./themes/'.SKIN.'/header.tpl', $options);
<title><?php print $template['options']->getOption('title'); ?></title>

P.S.
Работоспособность кода не проверял, но думаю суть ясна.

P.S.S.
Единственный минус тут, если частое обращение к опциям - частое обращение к ДБ, но я думаю в наше время это не так кретично, да и если что, подход легко изменить, например опции при первом запросе все вытаскивать и хранить их в членах класса, а в деконструкторе, проверяем были ли внесены изминения, если да - то еще один запросик с апдейтом. Вобщем почти ORM :)
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Август 2009 - 10:36

v1ex, считаю что для пары простых настроек подойдёт обычный массив, зачем всё в БД пихать. Если конечно человек хочет с помощью интерфейса править данные, то естественно удобнее в БД хранить, иначе нафиг.
  • 0

#7 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 05 Август 2009 - 10:49

v1ex, считаю что для пары простых настроек подойдёт обычный массив, зачем всё в БД пихать. Если конечно человек хочет с помощью интерфейса править данные, то естественно удобнее в БД хранить, иначе нафиг.

Согласен, нету смысла в БД хранить данные без правки через интерфейс. Сам люблю хранить все в массиве, но вот заказчики к сожалению - нет :)
  • 0


Оформление форума – IPBSkins.ru