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



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

#1 Евгений

Евгений
  • Неактивные
  • 481 сообщений
  • Репутация: 0
0

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

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

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


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

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

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

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

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как сохранить изменения, сделанные на странице
  2. Как самостоятельно создать шаблон joomla. Создание темы для джумлы своими руками
  3. Создание сайта на Joomla
  4. Полное руководство по созданию полноценного блога
  5. Несколько сайтов на один хостинг

#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