Обзор заметок о движке. Часть 1.

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

Блоки

Управление блоками довольно сложное. По идее это должна быть одна из возможностей конфигурации, которую можно настраивать всяко разно. Мне например теги надо вниз страницы убрать было. Сейчас теги задаются непосредственно в Экшенах -> Init(). В конфигурации с ними было бы работать проще. Да и надежнее. Ведь Экшены это скорее часть движка, чем нечто настриваемое и менять бы их вообще не стоило.

Меню

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

protected $sMenuItemSelect='blog';
protected $sMenuSubItemSelect='good';


А они заданы оказывается не везде. Поэтому фактически серьезно изменить вид меню без изменений экшенов никак.

Является ли пользователь участником блога?

Отметился явный пробел в том, чтобы проверить является ли текущий пользователь участником блога.

На текущий же момент, чтобы выявить является ли он пользователем в ActionBlog.class.php используется такая конструкция:

/**
 * Проверяем является ли текущий пользователь пользователем блога
 */
$bNeedJoin=true;
$oBlogUser=null;
if($this->oUserCurrent){
	if ($oBlogUser=$this->Blog_GetRelationBlogUserByBlogIdAndUserId($oBlog->getId(), $this->oUserCurrent->getId())) {
		$bNeedJoin=false;
	}
}


При этом стоит отметить, что она владельца не считает участником.

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

Мне кажется, что это стоило бы прямо вынести в виде:

$oTopic->isMember()


Чтобы и в шаблонах участника было определять на много проще.

Использование сущностей entity

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

Работа с JS

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

Выводы

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

PS: Кстати, я долго сохранял эту статью как черновик… а они не отображаются почему-то в личном блоге. :(

6 комментариев

avatar
Надеюсь автор учтет ваши пожелания, поскольку кастомизация шаблонов — это одно из самых важных направлений. Надеюсь новая версия выйдет, как раз таки с новыми исправлениями и более свободной к кастомизации.
avatar
В принципе для кастомизации шаблонов вполне достаточно возможностей, но все же есть какие-то недостающие части, а также местами смешение логики и представления. Это не столько «ужасно», сколько неудобно и связано с тем что менять приходится вещи, которые относятся к движку — читать как «изменения придется адаптировать для каждой выпускаемой версии».
avatar
давайте не забывать, что шаблон будет новый, а там уже савсем другая вёрстка. Касаемо не в счёт автора блога, вполне логично
avatar
Давайте не забывать, что у меня свой шаблон и совершенно своя верстка. Каждый проект же — это своя система, верно? Шаблон по возможности не должен пересекаться с логической частью движка. То есть сои заметки непосредственно к шаблону не относятся.
avatar
Блоки — блоки можно прописывать прямо в шаблоне минуя экшен. Админки ради них не будет.
Меню — сверстайте меню как душе угодно, благо в шаблонах доступны названия текущего экшена, евента и значения параметров из роутера. Админки ради меню не будет.
Является ли пользователь участником блога? — и что? проблемы не вижу.
Использование сущностей entity — гораздо более функциональны чем массивы
Работа с JS — без этого никак, хотя в новой версии это более продвинуто. А при серьёзных изменениях в шаблоне? Ну дак на то они и серьёзные.
Выводы — работать всегда есть над чем, но этот инструмент не преследует цель стать «конструктором из коробки» для домохозяек.
Черновики отображаются только в разделе «Черновики»
  • ort
  • 0
avatar

> блоки можно прописывать прямо в шаблоне минуя экшен. Админки ради них не будет.
Так никто и не говорит об админке. Я про отделение от движка, чтобы это не било при обновлениях. А так придется колдовать с экшенами каждый раз. В конфиг же можно вынести некий общий массив типа:

$BlocksConfig = array(
        'blog' = array(
                'right' => array('comments'),
                'down' => array('tags'),
        ),
);
> сверстайте меню как душе угодно, благо в шаблонах доступны названия текущего экшена, евента и значения параметров из роутера. Админки ради меню не будет.

Да что вы мне все админку предлагаете, боже упаси… Я опять же скорее о том, что в реальности меню — всегда необходимая сущность. Просто его можно сделать удобнее, вот и все дела. Про роутер не подумал посмотреть, так как очень понравилось, что есть прямо некие данные специально для меню. Я лишь упомянул, что не везде они существуют. Видимо перепишу под данные роутера.

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

> Использование сущностей entity — гораздо более функциональны чем массивы
Несомненно! Ну да ладно — это уже совсем глубоко, пусть будет как есть. Мало кто туда лезть будет все равно.

> этот инструмент не преследует цель стать «конструктором из коробки» для домохозяек
Перечитайте еще раз, я ровным счетом не за «конструктор из коробки для домохозяек», а за рабочий инструмент для спецов, с хорошими возможностями обновления и расширения. Это и есть, по моему, условия для профессионального инструмента. Я например очень боюсь, что все мои «кастомизации» при очередном выпуске заново придется пилить.

Да и вообще к этой писанине стоит относиться именно как к личным заметкам постороннего человека. Это даже не «хотелки» или критика. Я подумал, что будет интересно.

Ozz, чего он так на меня? :-)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.