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

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

2 случай надо разбирать более подробно - а что если для некоторых виджетов захочется оставить аякс? Можно пойти по 3 пути - полная настройка сайтбаров. Это будет означать, что необходимо сделать редактор сайтбаров для главной. Проблема даже не в самом редакторе. Придется дополнительно хранить практически дубликат виджетов и сайтбаров, то есть получится для сайта две системы управления виджетами и сайтбарами. Это не фатально - можно будет сделать наследников от классов twidgets, tsitebars, tstandartwidgets для главной страницы. Также поддержка в админке.

Предположим, что я это сделал. А что если захочется аналогичного еще для какой то другой страницы? Повторять пройденный путь? Да, повторять - достаточно будет унаследовать классы для конкретной задачи. Где помещать управление сайтбарами/виджетами? сейчас есть страница виджетов в админке, а также есть страница настроек главной. Думаю для виджетов главной сделать подменю на странице виджетов - куда впоследствии можно будет добавлять индивидуальные страницы со своими виджетами. Следовательно надо делать некий механизм/алгоритм управления индивидуальными сайтбарами.

Требуется несколько по иному взглянуть на сайтбары и управление сайтбарами и виджетами. Сейчас сделано вот так: одномерный массив виджетов (id = widget) , и массив сайтбаров (номер сайтбара = sitebar), где уже каждый сайтбар это массив id виджетов. Контент каждого виджета генерируется классом виджетов. После генерации сайтбара в кэш, дергать класс виджетов смысла не имеет. Я сейчас вот подумал, что кажется есть лишняя сущность - наверно класс виджетов. Все полномочия по управлению виджетами можно передать сайтбару. Посмотрел размеры классов: 180 строк виджеты и 80 строк сайтбары. Файл данных виджетов занимает 1.5Кб и столько же занимает весь класс ttemplate, который содержит массив сайтбаров.

Думаю, что можно сделать следующее: организовать сайтбары в массив, где по умолчанию используется id =0 (или 1 - без разницы), а потом другие страницы, если хотят индивидуальных сайтбаров, то создают свою коллекцию виджетов/сайтбаров. А движок разруливает эти наборы. Тогда подойдет и один универсальный редактор виджетов в админке.

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

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