Объекты

Xaoc

Новичок
Объекты

Привет всем!

Объсню ситуацию. Я делаю CMS. Там я придумал такую вещь, как объекты. Что это такое? Объект - это некоторый текст(HTML например), который вставляется в страницу извне. То есть, когда редактируешь страницу, то этого текста нет. А когда просматриваешь страницу - есть. Вот сама идея. Теперь реализация. С самого начала я подумал о таком варианте: человек вводит в тело страницы комбинацию типа %OBJECT|5% и затем, уже при вызове страницы на просмотр, производится замена данной комбинации на объект с ID = 5. Это все хорошо, но есть недостаток - довольно громоздко, и не совсем удобно будет при создании доп. модулей.

Вариант 2: JavaScript.
Как я решил это реализовать это через ЯваСкрипт? А очень просто - человек создал объект. Затем на страницу запихал код <script language="JavaScript" src="object.php?id=5"></script>. При вызове этого всего дела со страницы в скрипте происходит генерация ЯваСкриптового кода вывода инфы через document.write. Отличный способ, но! Не совсем корректно. Вот не знаю - ну не нравится мне. Любой человек может с помощью небольшого кода вызывать объект с другого сайта и тогда облом.

Вот собственно и вопрос: друзья! Может Вы что-то посоветуете?
Буду очень благодарен!
 

Alien

Новичок
Если первый способ еще в каком то виде
имеет право на существование, то второй не лезет никак.
Человеку должна приходить страница, а
а не каша из js, iframe и т.п. вставок
(впрочем для баннеров эту технологию вовсю используют).
 

Crazy

Developer
Автор оригинала: Alien
Человеку должна приходить страница, а
а не каша из js, iframe и т.п. вставок
Мсье не желает хоть как-нибудь обосновать свою точку зрения, которая, признаться, даже в первом приближении не кажется мне разумной?
 

Xaoc

Новичок
Я вынужден согласиться с Alien - как-то не этично это выглядит...но все же это ведь то же вариант!
 

Alien

Новичок
Да пожалста.
Берем первую страницу http://www.phpclub.net/ чтоб далеко не ходить..
У нас есть общий шаблон (то где будем вызывать всякие js-ы), и пачка вставок - навигация, новости, баннеры, ответы ...

Соответственно лесом идут:
- поисковые системы
- юзвери без js
- диалапщики которые заебутся ждать когда ж это счастье загрузится
- сохраненные в мозилле странички (очень интересный баг есть)
- сервер поймавший бОльшую нагрузку (вместо одного http запроса - штук пять).

Да, где то это удобно. Но не здесь.
 

fixxxer

К.О.
Партнер клуба
заюзай стандартные шаблонные движки типа Смарти и не изобретай велосипед с кавдратными колесами
 

Crazy

Developer
Автор оригинала: Alien
- поисковые системы
Цитирую: "Человеку должна приходить страница". Но не будем цепляться к словам. Подумаем о другом: а весь ли HTML-код есть смысл индексировать. К примеру, новостная лента, которая через 12 часов вся переменится?

Практически не бывает.

- диалапщики которые заебутся ждать когда ж это счастье загрузится
Да. Это самая существенная причина: в наивных пионерских руках (мало кто вспоминает в этих случаях про не необходимость настроить работу с кэшем) начинается перезагрузка распухших фрагментов по каждому клику.

Но: если разрешить кэширование, да и внутри JS не гнать тупо document.write'ы, то случается дажу получить экономию по трафику.

- сохраненные в мозилле странички (очень интересный баг есть)
Если б только в мозилле... :)

- сервер поймавший бОльшую нагрузку (вместо одного http запроса - штук пять).
Хм. Картинки тоже вырежем? :)

Да, где то это удобно. Но не здесь.
Собственно с первой частью фразы -- консенсус. Что до второй части, то лично у меня недостаточно данных для принятия решения.
 

Xaoc

Новичок
Привет всем!

Ответ fixxxerа мне понравился - да, другому бы такой вариант подошел бы. Но есть одно большое НО: я НЕ хочу использовать чужие программы и т.п. по нескольким причинам. Одна из них - копирайты. Другая - хочется своё. Третья - в своём коде всегда проще разобраться чем в чужом.

Спасибо большое Crazy и Alien за мудрые советы. Но все же - к самой сути мы так и не подошли. В принципе вы помогли мне увидеть недостатки варианта с ЯваСкриптом. НО практически ничего не было сказано про первый вариант. А так же не было предложено других вариантов. Друзья! Если у кого-то есть какие идеи - поделитесь со мной и публикой! Я думаю это будет многим интересно!
 

Vasya

Guest
НО практически ничего не было сказано про первый вариант.
Было... То, что ты придумал как "объекты", называется "шаблоны" или "темплаты" от английского template. Объектами же в ПХП называется нечто другое.
И вот по поводу этих самых темплатов тебе посоветовали:

заюзай стандартные шаблонные движки типа Смарти и не изобретай велосипед с кавдратными колесами
 

fixxxer

К.О.
Партнер клуба
Прежде чем писать свой template engine, надо хотя бы ознакомиться с уже существующими...
 

Cid

...двинутый новичок
>> сохраненные в мозилле странички (очень интересный баг есть)

Проверено практически на IE - кэшируются файлы с расширением .js

Если js поместить в .php - все нормально =)
 

Mammoth

Guest
Мсье не желает хоть как-нибудь обосновать свою точку зрения, которая, признаться, даже в первом приближении не кажется мне разумной?
Хмм... Crazy, помнится какое-то время назад ты был ярым сторонником идеи "если хочешь отпугнуть народ от своего сайта - прикрути туда JS" (вольное изложение)...
 

Crazy

Developer
У Crazy есть любопытная особенность: он не является догматическим сторонником тех или иных идей. Т.е. с "все сайты -- только без JS", а равно как и с "все сайты -- только с JS" -- в равной степени не ко мне.
 

Xaoc

Новичок
Уважаемые!

Что-то совсем от темы отошли... может кто-нибудь все таки ответит на мой более ранний вопрос: нет ли других способов? На Смарти не посылать - это немного не то. Покопался в разных буржуйских системах новостей так там более чем через include ничего нет...
 

Mammoth

Guest
Что-то совсем от темы отошли... может кто-нибудь все таки ответит на мой более ранний вопрос: нет ли других способов?...
Честно говоря, не увидел каких-либо серьезных отличий между твоим первым и вторым вариантом. Разве что во втором явно прописывается вызов javascript-а, а в первом явно требуется предварительная обработка шаблонным движком.

Может быть для того, чтобы тебе что-то предложили, требуется предварительно описать проблемную область?

Если я тебя правильно понимаю, стандартные шаблонизаторы тебя ну никак не удовлетворяют (не спрашиваю чем, предположу, что трудностью запоминания всех "тегов") и ты хочешь завести свой с одним "тегом" - object (не спрашиваю что подразумевается под объектом, предположу - любое сочетание тегов HTML и текста).

При этом в шаблоне ты собираешься прописывать и данные - так называемые id объекта. Вследствие внедрения в шаблон данных получаем необходимость хранения кучи темплейтов вместо одного. Замечательно.

Так какие же у нас проблемы?
Не буду предполагать, а обращусь к первому посту в этом треде.

...человек вводит в тело страницы комбинацию типа %OBJECT|5% и затем, уже при вызове страницы на просмотр, производится замена данной комбинации на объект с ID = 5. Это все хорошо, но есть недостаток - довольно громоздко, и не совсем удобно будет при создании доп. модулей...
Как видим, мы имеем вариант когда все хорошо. Замечательно, будем от него отталкиваться и решать маленькие недостатки. Недостатков два:
1) "довольно громоздко";
2) "не совсем удобно будет при создании доп. модулей".

Тут мне приходится снова предполагать. Начнем по порядку.

Первый вариант расшифровки смыслового значения первого недостатка первого варианта твоей проблемы: "слишком трудно писАть %OBJECT|5%".
Возможное направление решения первого недостатка в первом варианте расшифровки его смыслового значения - вместо выражения "%OBJECT|5%" писАть выражения вида %O5%. Налицо сокращение количества рукописно вводимых символов более чем вдвое - с 10-ти символов до 4-х. Недостаток варианта решения - проглядывается тенденция к повторному "разрастанию" (другой возможный недостаток в виде сокращения максимально возможного количества стилистически подобных тегов мы не рассматриваем вследствие предположения об одном теге).

Второй вариант расшифровки смыслового значения первого недостатка первого варианта твоей проблемы: "сложность реализации механизма преобразования выражения вида %OBJECT|5% в вызов механизма внедрения соответствующего объекта в страницу".
Возможное направление решения первого недостатка во втором варианте расшифровки его смыслового значения не дам. А вот направление решения проблемы в целом смотри ниже.

Дальше смотрим "не совсем удобно будет при создании доп. модулей". Тут я просто встрял. Такой сложный вопрос - вопрос этики при создании доп.модулей. Раньше я как-то не задумывался об этом... а ведь... мда... стоит подумать...

/прошло три часа... нет, три часа мало, - прошло 20 часов.../

Мда... Мало ведь двадцати часов. Пойду-ка я домой, а то жена уж чай потеряла... Пока.

ЗЫ.
...На Смарти не посылать - это немного не то...
Насколько я знаю, Смарти - это ВСЕГДА "то". Это максимально универсальная система, настроить которую под себя, не залезая при этом в ее ядро, - абсолютно не проблема.

ЗЗЫ.

;-)
Хаос, большая просьба - не обижаться. Лады?

Ну а теперь обещанное направление решения проблемы:
http://www.phpclub.net/talk/announcement.php?forumid=13 (п. 2 первого раздела).
 
Сверху