MaxSite CMS

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

Плагины

Подписаться на эту рубрику по RSS

Виджет «События»

Рубрика: MaxSite CMS | Плагины
Дата: 11/08/2008 23:08:08

Виджет «События» (events.zip 6 ок. 3Кб) позволяет организовать вывод каких-либо событий в сайдбаре. Настройка виджета очень проста. Каждое событие должно располагаться в одном абзаце.

Каждое событие формируется в виде:

  1.  yyyy-mm-dd | до | после | текст события

То есть указывается дата события, сколько дней отображать ДО наступления указанной даты, сколько дней отображать ПОСЛЕ. Ну и сам текст события. В тексте можно использовать HTML.

Установка виджета. Просто скопируйте из архива каталог с файлами в каталог плагинов (maxsite/plugins). После этого активируйте его админ-панели. Сама настройка в «Сайдбары и виджеты».

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

Рубрика: MaxSite CMS | Плагины
Дата: 24/06/2008 00:26:46

Сегодня я таки смог сделать то, что так долго не удавалось. Еще для 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, так что скоро вы сможете его попробовать в действии.

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

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

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

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

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

Добавил еще одну «вкусность» - плагин, который преобразует тэги 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 | Плагины
Дата: 01/06/2008 11:59:45

Для того, чтобы расширить функциональность системы, используются плагины. Что такое плагины, я думаю, объяснять не нужно. Установка плагина сводится к нескольким простым действиям:

  • Скопировать файлы в каталог плагинов
  • В админ-панели активировать его

Некоторые плагины требуется явно прописывать в шаблоне, поэтому есть смысл почитать описание его разработчика.

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

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

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