MaxSite CMS

Официальный сайт

MaxSite CMS 0.16

Воскресенье, 29 июня 2008 г.
Рубрика: MaxSite CMS -> Версии

Выложил MaxSite CMS 0.16. Я уже говорил об изменениях раньше, поэтому нет смысла повторяться.

Хотя, если совсем кратко, то изменений много, впрочем все они на уровне мелких улучшений. Также исправил несколько багов. Добавлены новые виджеты и плагины. Сейчас в комплекте 21 плагин. Для начала неплохо. wink

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

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

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

И в завершении. Если кто помнит, я когда-то вел рассылку по WordPress, но уже полгода выпусков не было. Я подумал и решил возобновить выпуски, но только не по WordPress, а по MaxSite CMS. Я даже сделал выпуск-анонс, но произошла неприятность. Сервер mail-ru, похоже, решил «забить» на авторов рассылок и рассылки выходят совсем в непотребном виде. В прочем это случилось не сейчас, а раньше - с нового года, когда они сменили свой «движок». Саппорт прекрасно в курсе проблем, но...

Поэтому мне было бы интересно вести рассылку по своей системе, вот только с помощью какого сервиса? Subscribe-ru не предлагать - у меня с ними давние счеты (козлы они). В общем вопрос пока подвис.

Всё, вопрос с подпиской решен. Гугл, как всегда пришел на помощь! smile

upd Для обновления переименуйте старый каталог «system» в «system-old». Загрузите вместо него новый. Установите права на каталог «cache» 777. Каталог «application» можно загрузить поверх старого или также переименовать и загрузить новый. Только в этом случае не забудьте из старого взять конфигурационные файлы.

Еще нужно удалить плагин «template_options» (в maxsite/plugins). Теперь он находится в админских плагинах и подключается всегда автоматически.

Плагин «Избранное»

Вторник, 24 июня 2008 г.
Рубрика: MaxSite CMS -> Плагины

Сегодня я таки смог сделать то, что так долго не удавалось. Еще для WordPress я когда-то придумал подобный виджет. Работает он просто: нужно указать номера записей и они будут выведены в виде списка.

Данный виджет удобно использовать для создания произвольных списков любых записей. Так вот, проблема в том, что довольно сложно придумать как объединить в одном виджете вывод не только записей, но и рубрик, архивов и т.д. То есть любых страниц сайта. Указывая номер, система должна каким-то образом определить тип, потому что номера ID могут принадлежать и записям, и рубрикам, и другим данным.

Многократно пытался придумать что-то подобное для WordPress, но так и не получалось.

Тут еще трудность в том, что нужно определять текущую страницу и отмечать элемент списка например с помощью class="current-page", для подсветки. В WordPress'е для этого служат раздельные функции is_page, is_single и т.п. То есть ситуация получается довольно запутанная. В итоге, для подобных задач я использовал свой виджет «Ушки», где вручную прописывал HTML и не морочил голову.

Для одного сайта на MaxSite CMS мне потребовался аналогичный виджет «Избранное» и поначалу я кинулся делать как на WordPress. Потом вспомнил, что для редиректа я написал функцию mso_current_url, которая возвращает адрес текущей страницы, относительно сайта. И тут-то меня и осенило. smile

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

  1.   / | Главная
  2.  page/about | О компании
  3.  category/news | Новости
  4.  page/price | Услуги

Как видите, всё совсем просто - тут и тип, и ссылка, и название. Вариации абсолютно любые и поэтому можно выстраивать какие угодно списки. smile

Этот виджет я включу в версию 0.16, так что скоро вы сможете его попробовать в действии.

В будущей версии MaxSite CMS нас ожидает...

Воскресенье, 22 июня 2008 г.
Рубрика: MaxSite CMS -> Ход работ

Планирую скоро выложить версию 0.16 MaxSite CMS.

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

- Немного изменилась процедура проверки залогиненности юзеров. Раньше она проверялась только один раз за сессию, теперь каждый раз. То есть, даже если взломать куку и указать признак залогиненности, эффекта это не даст - всё-равно будет произведена проверка логина и пароля. Минус только один - дополнительный запрос к БД.

- Улучшена работа кэша. Теперь в кэше можно создать свой каталог (с правами на запись!) и при сбросе кэша - ваш каталог останется целым. Если же нужно сбросить весь кэш, что случается крайне редко, то указывается дополнительный параметр: mso_flush_cache(true);

- Вывод виджета осуществляется только если есть что выводить. Например, если в текстовом виджете нет никакого текста, то виджет выведен не будет. А то раньше «висели» оформляющие блоки виджетов.

- Добавлена возможность ссылаться на страницы по их ID. Например http://site/17 - будет выведена страница с ID=17.

- Откатился на CodeIgniter 1.6.1. Нет у них совместимости с предыдущими версиями, да и глюки новой  (1.6.2) замучили.

- Сделал виджет «Ссылки». Всё-таки решил я отказаться от ссылок в админ-панель, поскольку вывод этих ссылок всё-равно в виджетах. Можно указать адрес, название ссылки, noindex и nofollow и target = _blank для каждой ссылки.

- Добавлены новые возможности при получении записей для функции mso_get_pages. Теперь можно указать список рубрик для главной, и номер одиночной записи. По мере потребностей я буду добавлять другие параметры.

- Сделал виджет «Облако рубрик». Работает и настройки почти такие-же как и в «Облаке меток».

- Сделал плагин безопасности «Admin IP». Принцип его работы таков: можно указать список IP, с которых разрешен доступ в админ-панель. Если IP не совпадает, то доступ запрещается. На тот случай, если сменится IP самого админа, то можно указать секретный URL, перейдя по которому список разрешенных IP очищается.

Всё это будет доступно в версии 0.16. Пока идет тестирование, после этого выложу архив для скачивания.

Настройка шаблона

Вторник, 17 июня 2008 г.
Рубрика: MaxSite CMS -> Шаблоны

Как оказалось, плагин «template_options» настолько удачный, что я решил его перенести в админ-панель и теперь он загружается всегда.

На его основе я сделал то, что для WordPress представляет собой серьезную проблему. wink

Читать далее »

Плагин перелинковки страниц

Вторник, 17 июня 2008 г.
Рубрика: MaxSite CMS -> Плагины

В качестве эксперимента сделал плагин, который выполняет перелинковку страниц. Алгоритм не очень сложный.

Создается массив всех заголовков. После этого он разбивается на слова и удаляются все короткие (до 4 символов). При выводе текстов происходит поиск слов из заголовков, и если есть, то ставится ссылка на соответствующую запись.

Работает средней паршивости по двум одной причинам. Первая - из-за того, что preg_replace не умееет работать с юникодом (ненавижу юникод!!!), пришлось исхитриться и выполнять кодирование в/из windows-1251. Это плохое решение, но зато быстрее, чем менять алгоритм замен.

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

ps Такие ссылки выделил серым.

Откатился на CodeIgniter 1.6.1

Пятница, 13 июня 2008 г.
Рубрика: CodeIgniter

Что-то совсем меня достали ошибки новой версии CodeIgniter 1.6.2. Явно что-то там не в порядке. Я уже дважды писал о проблемах: вначале отказался работать XmlRpc, потом начала отваливаться база. А сейчас опять выяснилось, что если указать db->where(array('page_title'=>'')), то CodeIgniter падает с ошибкой о неверном SQL. В общем, нафиг такое счастье, пусть разработчики сами разбираются. Я же откатываю свою систему на 1.6.1, где всё замечательно работает.

Плагин для оформления преформатированного текста

Вторник, 10 июня 2008 г.
Рубрика: MaxSite CMS -> Плагины

Добавил еще одну «вкусность» - плагин, который преобразует тэги PRE и CODE в нумерованный список.

Вот пример работы:

  1.  function mso_check_post($args = array())
  2.  {
  3.   if ($_POST)
  4.   {
  5.   $check = true;
  6.   foreach ($args as $key=>$field)
  7.   {
  8.   if (!isset($_POST[$field]))
  9.   { // нет значения - выходим
  10.   $check = false;
  11.   break;
  12.   }
  13.   }
  14.   if (!$check) return false;
  15.   else return $_POST;
  16.   }
  17.   else return false;
  18.  }

Преимущества такого способа в том, что нумерация строк происходит автоматически. Правда, для того, чтобы шаблон отображал списки как положено, необходимо в стили (css) добавить несколько строчек (они в комплекте).

Еще этот шаблон выполняет подсветку (выделяет полужирным) ключевые слова PHP.

Схема MaxSite CMS

Воскресенье, 8 июня 2008 г.
Рубрика: MaxSite CMS -> Основы

Чтобы объяснить принцип работы MaxSite CMS, выкладываю её схему в графическом виде.