Конструктор страниц (многомодульное представление данных)

crocodile2u

http://vbolshov.org.ru
chameleon
...сакральный смысл таскать состояние всего приложения от клиента на сервер...
Пользователь приходит по ссылке из поисковика (или ему друг послал ссылку) - и _нужно_, чтобы он увидел то состояние, которое видел друг или поисковик. иначе он вообще может не увидеть нужного ему контента и ему придется, допустим прокручивать страницы тех же новостей самому.

Другое дело, что автор, действительно, видимо, не до конца осознал проблему - это видно по приведенному примеру.
 

snark

Новичок
Да, как??? Как вы не можете понять, что этот проект сделан совершенно по другому принципу... Допустим, для того, чтобы подключить к странице тоже голосование, мне приходится открывать PHP файл и руками его править... См. тему топика, здесь речь идет о проектировании администраторской части, которая бы выполняла все выше перечисленные действия автоматически исходя из данных текущей страницы... Суть думаю ясна... Но входе моих попыток реализовать данную конструкцию столкнулся с проблемой обнуления (я думаю вы понимаете о каком обнулении идет речь) вот и все.... Конечно, изначально и была идея сериализовывать все GET переменные и передовать их одним параметром, но думал, что возможно здешний обитатель подскажет, что-то лучшее... но увы, как выяснелось, здесь только далеко не многие понимают о чем идет речь, раз предлагают реализовывать это с помощью переменных сессий и не видят в этом жирных минусов. А тем, кто всеже понял о чем идет речь огромное спасибо...

P.S. в приведенном примере данной проблеммы просто не существует... и наглядно проилюстрировал пример страницы, на которой расположены несколько модулей, а проблеммы нет только из за того, что я непосредственно знал, сколько и какие там будут присутствовать модули, поэтому и конструировал запросы дабы избежать потери состояния... Но всеже хотелось бы это автоматизировать... И у меня есть отличные для этого идеи... ;) Вот только время и силы найти... Я занимаюсь проектированием системы управления уже не один год и это очень сильно надоело... но бросать проект жалко, он действительно стоящий... Хотел бы найти единомышлинников... и программировать вместе? Да. Да,точно.

Спасибо.
 

SelenIT

IT-лунатик :)
Имхо, есть еще компромиссный вариант между сессией и тасканием сериализованного массива в урле - заносить в базу под определенным id все хотя бы раз встретившиеся комбинации параметров. Что-то вроде того, как на этом форуме запоминаются поисковые запросы...
 

kvf77

Red Devil
snark
ааааааааа - понял я наконец что ты хочешь - нда - слушай, ты чего тут столько голову морочил людям?
к тому же я тебе давал в самом начале ответ точный и конкретный.
1) Делаем в базе схему сайта, в результате у каждой страницы будет свой уникальный ID
2) создаем массив-описание того где и в каком порядке все на странице должно содержаться
3) записываем в базу с признаком ID страницы.
4) после этих действий все URL у тебя будут простые:
http://mysite.ru/page.php?id=100
5) В скрипте page.php получаешь из базы схему страницы по ее ID
6) строишь изходя из этих данных страницу попутно обрабатывая POST или другие GET запросы компонентами, если таковые были

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

crocodile2u

http://vbolshov.org.ru
snark, kvf77:

Путь решения конкретной поставленной задачи, имхо, уже давно ясен:
раз инстансы модулей разные, то они должны управляться разными параметрами запроса.

В последних же постах больше обсуждалась другая проблема, по-моему, более важная, особенно для автора :) : а стоит ли овчинка выделки? Будет ли это _реально_ применяться?
 

kvf77

Red Devil
crocodile2u

Неа - путал он нас - совсем путал. Я так понял - что у него нет страницы как таковой и он пытается в URL вовсе не сохранить состояние объектов, а расставить их на странице. Вот в чем заковыка - просто он путался сам и путал нас.
А что касается применения - ну видешь же он применяет :)
Он лучше бы спросил как это изменить, чтобы оно работало нормально.
 
chameleon,
> не видел? а они есть! (с) не мой. Эти сайты называются порталами. В одной области web-mail, в другой карточка с выбранным контактом, в третьей запускается поиск по справочнику + еще туева хуча контента и все на одной странице. Причем юзеру (не админу) представляется возможность корструировать свое рабочее пространство (удалить, добавить, свернуть инстансы и т.п.)

да такие сайты есть, но там все же, на одной старнице за один раз отображается один блок информации. а все остальное - это только развернутая панель навигации...

+ всякие пользовательские данные должны храниться в сессиях, т.к. они для каждого ользователя свои.

А вот то, что отображается в главном окне с контентом, то это передается по ссылке.

и, имхо, то, что нужно автору этого топика - изврат.

з.ы. http://aquaimperia.ru/index.php?idm...&letter=192 убожество.

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

snark

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

Loshadka, ты хоть работал с этой страницей??? Страница, находится в режиме подробного описания выбранной позиции в каталоге (энциклопедии), соотвественно, в этом режиме можно дайть коментарий и поставить рейтинг. Если вы перейдете на другую страницу в каталоге (энциклопедии - она расположена ниже) то все встанет на круги своя... В ЧЕМ расскажите мне здесь неудобства??? Вы пишете сами не знаете что, а еще на других говорите....
 
snark
Последнее изменение сайта - гораздо улучшило его восприятие...

но, то, что было до этого, начиная от формы добавления комментария( фиолетового цвета ), тихий ужас

Лично у меня, например на вот этой странице: http://aquaimperia.ru/index.php?idm=3&idarea=2&action=fullview&cid=6985&page=4&letter=192 после вида формы для добавления комментария складывается ощущение, что это конец страницы... очень неудобно перемещаться по каталогу, когда у меня сначала показывается форма для комментария....

согласись, что ты или ищешь нужную информацию, или читаешь ее описание, с возможным добавлением комментариев, но не 2 действия одновременно?
 

snark

Новичок
Loshadka, да как ты неможешь понять, что коментарии появляются только в режиме полного просмотра...
Если ты перейдешь непосредственно на ссылку:
http://aquaimperia.ru/index.php?idm=3&idarea=2, то никаких форм там небудет, а вот если ты нажмешь на превью картинки, то увидишь ее подробное описание + коментарии + рейтинг к выбранному элементу каталога.... Что неудобного? А цвета, да, согласен... дизайнер из меня никакой... ;)
 

yugene

Отошел от дел
Автор оригинала: Loshadka
snark
согласись, что ты или ищешь нужную информацию, или читаешь ее описание, с возможным добавлением комментариев, но не 2 действия одновременно?
snark, задумайся, пока не поздно
 

crocodile2u

http://vbolshov.org.ru
Loshadka
yugene
Присоединяюсь :)

snark
Не обижайся только и не злись - люди здесь советуют то, что и себе посоветовали в подобной ситуации.
 

Кром

Новичок
Прочитал еще раз от начала до конца.
Этому топику место на помойке.
 

lorien

Новичок
Я когда начинал свою CMS разрабатывать тоже на таком вопросе заморачивался, как при манипулировании с одним модулем, сохранять состояние других модулей. Но потом я пришёл к мысли, что это всё надуманно и РЕАЛЬНО такое редко может понадобицца. Обычно сущесвует какая-то часть на сайте, занимающая больше всего экранного места, куда и загружаецца вывод активированного модуля, а все другие (если есть) просто показывают дефолтный вывод.


Вариант с сессиями мне не нравицца, потому что юзверь не сможет сделать закладку на ту или иную страничку сайта: в адресной строке постоянно будет index.php или ещё что-нибудь.
 

OZER

Guest
При таких проблеммах, я лично в админке рисую содержание страници на XML. Потом клиенту её по XML структуре просто отображаю. Решение ограниченно твоим полетом мысли, причем возможен такой вариант что все твои объекты будут неоднотипными.
 

WMix

герр M:)ller
Партнер клуба
сам пытаюсь создать подобное....

я всеже мыслю на уровне MVC.. те каждый модуль наследован от интерфейса, потому как на пхп5 неперешел,

те у каждого модуля есть метод perform() который должен сделать законченный вид
ну и поместить в контейнер $this->view

контроллер запускает модули поочереди, какие модули запускать, пусть это будет масив, а лучше дерево...

далее создаётся хмл который парсируется xslt...

ну а админ это управление тем деревом, или масивом....

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

поэтому все написанное это просто идеи....


PHP:
class Controller {

	function process( $request ){

		// пойск запрашеваемого модуля в базе
		$tree = dbPageMap::getTree();
		$node = $tree->getNodeById( $request );
		$className = $node->modul;

		// подключение обьекта (Modul)
		$classPatch = ROOT_PATH."php/modules/". $className .".class.php"; 
		include_once( $classPatch );
		
		// инициализация
		$pageObj = new $className( $node->params, $node->id );

		// вывод результата
		if( $pageObj->validate() ){          // валидация
			$pageObj->perform();             // запуск
			return $pageObj->getView();     // получение обьекта вида (View)
			         // вывод результата
		}
	}

}

// ИНТЕРФЕЙС ДЛЯ МОДУЛЯ
class Action{

	var $id;
	var $para;
	
	var $view;

	function Action( $para, $id ){
		$this->id = $id;
		$this->para = $para;
		$this->view = null;
	}

	function validate(){ 
		return true;
	}

	function perform(){
		$this->view = "нифига нет";
	}
}


//Ну и сама модель
//----------------------------
class Modul_one extends Action{
	function perform(){
		$this->view = "Это модуль один; мой индификатор: ".$this->id." Ну а мои настройки: ".$this->para;
	}
}

ну дальше сами... достаточно все тривиально!!
-~{}~ 09.08.05 23:38:

ой блин.... тут 4 страницы... ))) я ток первую прочел ))
 
Сверху