Лучшая CMS

B
На сайте с 13.02.2008
Offline
262
#91
Sly32:
Хоть и некорректно сравнивать CMS и фреймворки, на Джанге реально намного проще писать

Пример не на чистой Джанго, а на CMS Wagtail, которая основана на Джанго, с приятной простой админкой - аля вордпресс, и практически без каких-либо ограничений и с деревом объектов.

---------- Добавлено 29.11.2016 в 11:32 ----------

SeVlad:
Если я правильно понял вопрос.

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

---------- Добавлено 29.11.2016 в 11:36 ----------

SeVlad:
<?php add_post_meta($post_id, $meta_key, $meta_value, $unique); ?>

Глянул справочник. Нет, это не то. Эта функция просто добавляет поле в имеющийся тип. А мне надо создать новый тип на базе имеющегося, т.е. с наследованием всех его плюшек.

S3
На сайте с 29.03.2012
Offline
302
#92

borisd, Почитал про Wagtail - впечатляет, надо перенести попробовать один чисто джанговский проект под него, главным образом из-за админки

SeVlad
На сайте с 03.11.2008
Offline
1609
#93
borisd:
Нужно просто на базе имеющегося типа материала создать новый тип с тем же самым функционалом, только с дополнительным полем или методом. Я привел пример, как это можно сделать в три строчки кода без какого-либо избыточного дублирования.

В ВП доп поля (произвольные) - штука почти интеллектуальная :) Они есть дефолтно. Возможности ими воспользоваться точнее.

Вот как это дефлтно выглядит в админке (с ранее созданными неск поями):

Заполнил название (/выбрал его из комбобокса) и значение - всё, в базу упало привязаное к посту.

Нет - значит нет.

Создание же нового типа контента как-то так:

add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'acme_product',
array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' )
),
'public' => true,
'has_archive' => true,
)
);
}

В массиве можно сразу указать что [не]наследовать ну и задать названия.

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

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
obius
На сайте с 19.08.2015
Offline
56
#94
SeVlad:
А вот нек. программисты считают использование ООП везде и всюду разновидностью религии .

ООП не панацея, и все же, если бы в ВП использовали хоть какие то паттерны проектирования, проблема с обратной совместимостью были бы решены. ИМХО

B
На сайте с 13.02.2008
Offline
262
#95

Sly32, Очень приятный движок. У меня самопис был построен на подобных принципах (дерево и т.д.), но самопис так и остался сделанным на коленке, т.е. я могу использать его только для своих нужд. А тут наткнулся на похожее решение, но уже из коробки и поддерживаемое сообществом.

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

Кстати, там основная поисковая система - elasticsearch. Крайне рекомендую попробовать. Правда пришлось повозиться с настройкой, так как многие возможности эластиксёча еще не реализованы нативно в вагтэйле, но я уже прикрутил русскую морфологию и вывод поисковых сниппетов с подсветкой искомых слов. Протестировал на паре миллионов документов среднего размера. Индексация на шестиядерном интеле заняла всего 50 минут. Сам поиск идет субъективно около 1 секунды (точно не замерял).

Там из коробки и

SeVlad
На сайте с 03.11.2008
Offline
1609
#96
obius:
если бы в ВП использовали хоть какие то паттерны проектирования,

Серьёзно?🍿

obius:
проблема с обратной совместимостью были бы решены.

А их сосбно нет :) Может как раз благодаря "отсталой архитектуре"?

Я напр. не знаю ни одного др двига, где проблемы перехода с версии на версию были бы настолько... не проблемны.

Да, что бы совсем без проблем - оно, конечно, не обходится. Но это, как правило, какие-то локальные проблемы (хотя может и относительно массовые), связанные то с настройками конкретного хостинга, то совместимости тем/плагинов. Но что немаловажно - эти проблемы решаются достаточно оперативно. Если не ядром, то плагинами.

B
На сайте с 13.02.2008
Offline
262
#97

SeVlad, спасибо за пример.

Мне анекдот вспомнился:

"Стюардесса в салоне нового лайнера объявляет о то, что находится в самолете:

- На первой палубе - багаж, на второй - бар, на третьей - поле для гольфа, на четвертой бассейн.

И добавляет:

- А теперь, господа, пристегнитесь. Сейчас со всей этой фигнёй мы попробуем взлететь."

Как я понял, в WP тот же принцип создания полей, что и создание пользовательских полей в друпале. Т.е. для каждого поля создается отдельная таблица. Это конечно гибко, но громоздко и непроизводительно - при рендеринге объекта приходится дергать все эти таблицы в БД. Я всё же в большинстве случаев предпочитаю хранить все поля материала в одной таблице типа материала. Это прозрачно и работает быстро и надежно. Недостаток - новое поле надо в коде ручками прописывать (1 строку), а не в админке создавать.

AK
На сайте с 23.02.2009
Offline
117
#98
borisd:
хранить все поля материала в одной таблице типа материала

О, счас еще один холивар подоспеет. Это вы зря, конечно.

S3
На сайте с 29.03.2012
Offline
302
#99

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

Я, создавая модель постов в Джанге, добавляю FK - категорию, раздел. А потом вывожу содержимое, при необходимости фильтруя по этому полю. Все предельно просто.

SeVlad
На сайте с 03.11.2008
Offline
1609
#100
borisd:
при рендеринге объекта приходится дергать все эти таблицы в БД.

"Все" - это все 2 шт :) Причём они и так дёргаются, потому как в одной табл - контент, в др. ВСЕ его данные/зависимости.

Причем дёргаются один раз (если по уму делать, а не как в "премиальных" темах). Ибо WP_Query.

borisd:
Недостаток - новое поле надо в коде ручками прописывать (1 строку), а не в админке создавать.

В админке.. Я даже скрины показал.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий