Центр помощи
Подписаться на эту рубрику по RSS
Условия отображения виджета
Суббота, 4 октября 2008 г.Рубрика: Центр помощи -> Общие вопросы
Просмотров: 8902
Иногда возникает задача отображать виджет не на каждой странице сайта, а на каких-то выбранных. Например с учетом типа данных (home, page, category и т.д.). «Классический вариант» перекладывает решение на сам виджет. Ну например для отображения только на страницах рубрик нужно вводить условие is_type('category').
Плагин «Tabs»
Четверг, 18 сентября 2008 г.Рубрика: Центр помощи -> Плагины
Метки: плагины
Просмотров: 4623
Сделал плагин для табов. Сами по себе эти табы не проблема, тем более, что они уже стандартно входят в jQuery UI (он в комплекте MaxSite CMS). Но мне хотелось сделать так, чтобы эти табы можно было настраивать как обычный виджет.
Проблема в том, что содержимое таба это какая-то php-функция. Можно конечно просто выводить какой-то статический текст, но мне такой вариант не интересен. Насколько я знаю, даже в некоторых WordPress-шаблонах данная проблема решена «в лоб»: функции для табов явно прописаны в шаблоне или виджете. То есть например поменять порядок или сами функции можно только изменив исходный php-код. Мне такой подход не нравится, поэтому я придумал другую схему.
Виджет «События» позволяет организовать вывод каких-либо событий в сайдбаре. Настройка виджета очень проста. Каждое событие должно располагаться в одном абзаце.
Каждое событие формируется в виде:
yyyy-mm-dd | до | после | текст событияТо есть указывается дата события, сколько дней отображать ДО наступления указанной даты, сколько дней отображать ПОСЛЕ. Ну и сам текст события. В тексте можно использовать HTML.
Установка виджета. Просто скопируйте из архива каталог с файлами в каталог плагинов (maxsite/plugins). После этого активируйте его админ-панели. Сама настройка в «Сайдбары и виджеты».
Сегодня я таки смог сделать то, что так долго не удавалось. Еще для WordPress я когда-то придумал подобный виджет. Работает он просто: нужно указать номера записей и они будут выведены в виде списка.
Данный виджет удобно использовать для создания произвольных списков любых записей. Так вот, проблема в том, что довольно сложно придумать как объединить в одном виджете вывод не только записей, но и рубрик, архивов и т.д. То есть любых страниц сайта. Указывая номер, система должна каким-то образом определить тип, потому что номера ID могут принадлежать и записям, и рубрикам, и другим данным.
Многократно пытался придумать что-то подобное для WordPress, но так и не получалось.
Тут еще трудность в том, что нужно определять текущую страницу и отмечать элемент списка например с помощью class="current-page", для подсветки. В WordPress'е для этого служат раздельные функции is_page, is_single и т.п. То есть ситуация получается довольно запутанная. В итоге, для подобных задач я использовал свой виджет «Ушки», где вручную прописывал HTML и не морочил голову.
Для одного сайта на MaxSite CMS мне потребовался аналогичный виджет «Избранное» и поначалу я кинулся делать как на WordPress. Потом вспомнил, что для редиректа я написал функцию mso_current_url, которая возвращает адрес текущей страницы, относительно сайта. И тут-то меня и осенило. ![]()
Совершенно не обязательно указывать номера записей или рубрик, и как-то указывать их тип. Вместо этого достаточно указать путь страницы относительно сайта и название ссылки вот так:
/ | Главная page/about | О компании category/news | Новости page/price | УслугиКак видите, всё совсем просто - тут и тип, и ссылка, и название. Вариации абсолютно любые и поэтому можно выстраивать какие угодно списки.
В качестве эксперимента сделал плагин, который выполняет перелинковку страниц. Алгоритм не очень сложный.
Создается массив всех заголовков. После этого он разбивается на слова и удаляются все короткие (до 4 символов). При выводе текстов происходит поиск слов из заголовков, и если есть, то ставится ссылка на соответствующую запись.
Плагин для оформления преформатированного текста
Вторник, 10 июня 2008 г.Рубрика: Центр помощи -> Плагины
Просмотров: 3027
Добавил еще одну «вкусность» - плагин, который преобразует тэги PRE и CODE в нумерованный список.
Вот пример работы:
function mso_check_post($args = array())
{
if ($_POST)
{
$check = true;
foreach ($args as $key=>$field)
{
if (!isset($_POST[$field]))
{ // нет значения - выходим
$check = false;
break;
}
}
if (!$check) return false;
else return $_POST;
}
else return false;
}Преимущества такого способа в том, что нумерация строк происходит автоматически. Правда, для того, чтобы шаблон отображал списки как положено, необходимо в стили (css) добавить несколько строчек (они в комплекте).
Еще этот шаблон выполняет подсветку (выделяет полужирным) ключевые слова PHP.