1. morph-x - 20 Октября, 2011 - 01:55:51 - перейти к сообщению
Мне нужно создать CMS для сайта-визитки. Она должна быть рассчитана на людей, которые плохо умеют пользоваться компьютером. Уже несколько дней пытаюсь хотя бы нормально начать ядро. Может вы поможете? Подскажите, пожалуйста, как сделать хотя бы 2 уровня вложенности (т.е. может быть просто страница, а может быть страница -> подстраница) и как правильнее это сделать. Я на этом завис . Заранее буду очень благодарен!
2. DeepVarvar - 20 Октября, 2011 - 02:10:24 - перейти к сообщению
morph-x, а ведь все оказалось не таким простым как выглядело на первый взгляд?
И как вот тут сейчас поступать?
Писать скатерть "Создание ЦМС с нуля"?
Слать гуглить?
Путей решения несчетное кол-во...
Каждый из путей наличие знаний.
Чем больше знаний - тем меньше путей, но тем они более ёмки.
Может и не надо такие абстрактные вопросы задавать?
Даже про ваши "страница -> подстраница" тут скатерть писать надо.
А потом вы будете холивары читать про то, что один делает так, а другой эдак...
Как быть?
И как вот тут сейчас поступать?
Писать скатерть "Создание ЦМС с нуля"?
Слать гуглить?
Путей решения несчетное кол-во...
Каждый из путей наличие знаний.
Чем больше знаний - тем меньше путей, но тем они более ёмки.
Может и не надо такие абстрактные вопросы задавать?
Даже про ваши "страница -> подстраница" тут скатерть писать надо.
А потом вы будете холивары читать про то, что один делает так, а другой эдак...
Как быть?
3. morph-x - 20 Октября, 2011 - 02:39:13 - перейти к сообщению
DeepVarvar пишет:
morph-x, а ведь все оказалось не таким простым как выглядело на первый взгляд?
Да, как вы правы
DeepVarvar пишет:
Может и не надо такие абстрактные вопросы задавать?
А что я не так спросил? Мне интересна сама логика, как это сделать. Конечно, я рылся в чужих исходниках (Template CMS, CMSimple, WordPress) но теперь меня мучает мысль какой из методов будет лучше использовать (в моем случае) у кого какие преимущества (а ведь преимущества с исходного кода не понять ). Поэтому я и обращаюсь к вам. Насчет гугла, я даже не знаю как правильно сформировать запрос...
DeepVarvar пишет:
Как быть?
Вам решать... Но если можете, поделитесь ссылкой на какую-нибудь статью, пожалуйста.
4. DeepVarvar - 20 Октября, 2011 - 02:54:30 - перейти к сообщению
Что я встречал?
Встречал что есть каталог и в нем есть несколько типов:
Продукт, Раздел, Производитель.
Встречал что есть блоги и в них есть несколько типов:
Блог, Раздел, Тематика, Теги.
Встречал новости и там та же песня..
Что лучше?
Помоему принцип один.
Как это делается?
Одна таблица на каждый тип + если надо, таблицу связей меж ними.
В двух словах - так.
(Добавление)
В вашем случае типа два:
Раздел и Документ.
Отсюда и пляшите.
Встречал что есть каталог и в нем есть несколько типов:
Продукт, Раздел, Производитель.
Встречал что есть блоги и в них есть несколько типов:
Блог, Раздел, Тематика, Теги.
Встречал новости и там та же песня..
Что лучше?
Помоему принцип один.
Как это делается?
Одна таблица на каждый тип + если надо, таблицу связей меж ними.
В двух словах - так.
(Добавление)
В вашем случае типа два:
Раздел и Документ.
Отсюда и пляшите.
5. morph-x - 20 Октября, 2011 - 03:05:36 - перейти к сообщению
Спасибо. Я тут думаю еще про несколько методов. Можно я опишу какие-то методы или еще что-то, может люди что-то оценят, обсудят, а может кому-то и пригодится. А то мне как-то страшно их использовать, когда не знаю что о них думают другие. Вы не против?
6. DeepVarvar - 20 Октября, 2011 - 03:08:06 - перейти к сообщению
Никто не против, я думаю.
7. morph-x - 20 Октября, 2011 - 04:31:40 - перейти к сообщению
Вот первый метод. Таблица со страницами будет выглядеть примерно так:
NL - это уровень вложенности (от Nesting Level). Если NL = 0 значит что страница в корне (родительская страница), если 1 - то это дочерняя страница. Т.е. получается как бы иерархия, и в данном примере она выглядит приблизительно так:
Животные
- Кошки
- Собаки
Природа
- Цветы
- Деревья
Теперь если мы выводим какую-то страницу, и ее NL = 0, то нужно отображать ссылки на следующие страницы пока не встретится следующая родительская страница (или не закончится список). Можно, конечно, не просто ссылки, но и содержимое или его часть, но это уже дело вкуса.
Плюс этого метода в том, что для хранения иерархии страниц можно использовать лишь одну таблицу, да и понять его, как мне кажется, проще.
NL - это уровень вложенности (от Nesting Level). Если NL = 0 значит что страница в корне (родительская страница), если 1 - то это дочерняя страница. Т.е. получается как бы иерархия, и в данном примере она выглядит приблизительно так:
Животные
- Кошки
- Собаки
Природа
- Цветы
- Деревья
Теперь если мы выводим какую-то страницу, и ее NL = 0, то нужно отображать ссылки на следующие страницы пока не встретится следующая родительская страница (или не закончится список). Можно, конечно, не просто ссылки, но и содержимое или его часть, но это уже дело вкуса.
Плюс этого метода в том, что для хранения иерархии страниц можно использовать лишь одну таблицу, да и понять его, как мне кажется, проще.
8. DeepVarvar - 20 Октября, 2011 - 04:36:05 - перейти к сообщению
Гон. Вам нужно точно знать кто кому папа.
9. morph-x - 20 Октября, 2011 - 04:48:08 - перейти к сообщению
DeepVarvar пишет:
Гон. Вам нужно точно знать кто кому папа.
А что мешает? Здесь все понятно. Кстати, можно переместить страницу Цветы выше и она будет принадлежать уже странице Животные. Можно сделать сортировку страниц (т.е. сам редактор списка страниц) как это сделано в Drupal для сортировки терминов, тогда вообще будет классно (особенно для пользователя ).
10. DeepVarvar - 20 Октября, 2011 - 04:50:20 - перейти к сообщению
morph-x пишет:
Как ???
переместить страницу Цветы выше
11. morph-x - 20 Октября, 2011 - 04:58:01 - перейти к сообщению
DeepVarvar пишет:
morph-x пишет:
Как ???переместить страницу Цветы выше
Можно ввести еще один параметр - POS - позиция, куда записывать позицию страницы. Так же здесь можно поменять значениями 5-й и 4-й ряды таблицы.
12. DeepVarvar - 20 Октября, 2011 - 05:42:27 - перейти к сообщению
И как вы себе представляете алгоритм вычисления "рокировки" страниц по уровню + позиции, когда юзер захочет перенести "деревья" в самый верх над "животными" и сделать эти "деревья" разделом?
(Добавление)
(Добавление)
(Добавление)
Вы сами сказали что станете предлагать свои варианты, и будете ждать критики или одобрения.
(Добавление)
morph-x пишет:
а можно вывести.. Так введите же
Можно ввести
13. morosit - 20 Октября, 2011 - 06:51:33 - перейти к сообщению
morph-x пишет:
Если NL = 0 значит что страница в корне (родительская страница), если 1 - то это дочерняя страница.
ИМХО NL дочернеи страницы должен быть равен ID родительской
14. morph-x - 20 Октября, 2011 - 17:07:53 - перейти к сообщению
DeepVarvar пишет:
И как вы себе представляете алгоритм вычисления "рокировки" страниц по уровню + позиции, когда юзер захочет перенести "деревья" в самый верх над "животными" и сделать эти "деревья" разделом?
После того как он перенесет "деревья" в самый верх ему нужно будет "сдвинуть" на +1 все страницы ниже. Алгоритм следующий: когда вы выводите страницу, то вы записываете ее NL во временную ($tmp_nl) переменную и выводите ссылки на все страницы ниже, пока не встретите страницу с NL >= $tmp_nl.
morosit пишет:
ИМХО NL дочернеи страницы должен быть равен ID родительской
Нет, NL - это УРОВЕНЬ вложенности. ID родительской странички лучше записывать в PARENT или PARENT_ID (так более логично).
15. caballero - 20 Октября, 2011 - 17:21:52 - перейти к сообщению
Дико извиняюсь но сия задача для вашего уровня знаний неподьемная.
Это только как страницы вывести - уже проблемма. А еще контент на страницах
а еще управление страницами. В лучшем случае через несколько месяцев переделок с нуля сгородите невообразимый для сопровождения кусок кодв.
Архитектуру надо сразу разрабатывать а не обсуждать какими переменными буду страницы выводить.
Это только как страницы вывести - уже проблемма. А еще контент на страницах
а еще управление страницами. В лучшем случае через несколько месяцев переделок с нуля сгородите невообразимый для сопровождения кусок кодв.
Архитектуру надо сразу разрабатывать а не обсуждать какими переменными буду страницы выводить.