Новый блог

Я немного устал от Интерры. Она, конечно, по-своему хорошая и быстрая, но... Этих «но» несколько:

  • Внутри не то чтобы чёрт ногу сломит, но разбираться в этом коде, чтобы дописать что-то, тоскливо и лениво.
  • Красивость ссылок (ЧПУ, ага) организована кучей RewriteRule в .htaccess, и они во-первых, не всегда работают как надо, а во-вторых, не очень хорошо переносятся, например, на nginx. Точнее, переноситься-то они переносятся, но то, что не работало с Apache, работать от этого всё равно не начнёт, а понять, почему так, становится ещё сложнее.
  • Smarty. Ненавижу. Не хочу ни обсуждать это, ни спорить об этом. Не переношу на дух эту штуку. Без особых поводов. Аллергия, видимо.
  • MySQL. Скоро мы поставим в стойку очередной сервер, на этот раз для VPS, и я туда перееду с FirstVDS.ru, на котором мне, конечно, нравится, но всё-таки глючно. А переехав, я хочу избавиться от MySQL на своём сервере, и держать там только PostgreSQL. Из принципиальных соображений и опыта для. Конечно, добавить поддержку слонов в Интерру несложно, но с учётом предыдущих трёх пунктов, это – лишний повод.
  • Не-ООП :-) Это уже совсем религия, хотя я никогда не был и не буду адептом ООП. Хочется просто.
  • И ещё я уже довольно давно обещал на одном форуме выложить небольшой туториал о том, как сделать простейший блог на PHP за один час. С этого и начну, а потом буду доводить до ума. Тут-то ООП и окажется очень кстати.

Итак. Это всё будет на PHP с использованием фрейморка Kohana, как разработке которого ваш покорный слуга некогда приложил руку (кое-какие фиксы в драйвере PostgreSQL) и собирается прикладывать в дальше (доводить до ума всё тот же драйвер и библиотеку Image). Данные будут храниться в PostgreSQL, но для доступа к данным будет использоваться ORM, так что можно будет без изменения кода использовать хоть MySQL, хоть SQLite, хоть чёрта лысого.

Ещё я надеюсь, что удастся вытащить из Интерры, не поломав, типографику и парсер wiki-разметки. Очень уж клёвые штуки.

Исходники некоторых модулей будут доступны для скачивания всем. Например, интерфейс к myphoto.nnov.ru: в качестве демонстрации работы с его API (который тоже надо будет дописать и «прилизать»).

Пожелаем мне удачи.

авг. 23, 2008 // 07:07 | Комментарии (12)


Небольшой хак для Wordpress 1.5.2, обрезающий ссылки на соседние посты до определённой длинны

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

Wordpress – штука, конечно, хорошая, но когда автор склонен к сочинительству длинных заголовков, сслыки на предыдущий и последующий посты не всегда выглядят красиво, разваливаясь на несколько строк и пытаясь сдвинуть друг друга вниз. Ограничивать ширину дивов и получать две многострочных ссылки рядом – лучше, но всё равно некрасиво как-то.

Вот, что сделал я (сам Wordpress не пользуюсь, но поковырял его немного в поисках хорошего движка для многопользовательского блога и ради удовольствия).

Функции previous_post_link(..) и next_post_link(..) определены в файле wp-includes/templates-functions-links.php. Их и будем править, но чуть позже. Сначала добавим в конец wp-includes/templates-functions-general.php такую вот функцию:


function limit_string($string, $len)
{
	if(strlen($string) <= $len) return $string;
	
	$words = str_word_count($string, 2);

	$pos=0;
	foreach($words as $indx)
		if($indx<$len) $pos=$indx;

	if($pos == 0) $string = substr($string, 0, $len);
	else $string = substr($string,0,$pos);
	
	return rtrim($string, '!@#$^&*(;".,/?- ')."...";
}
Она сначала пытается разбить строку на слова, и обрезать её до $len символов «красиво», то есть не разрывая слова. Если не получается (а такое будет только если заголовок – одно длинное слово или что-нибудь вроде «очень-очень-...-очень длинный пост») – режет как получится.

Остаётся только чуть-чуть подправить фукнции, о которых я упоминал выше. Находим в каждой из них строки

$link = str_replace('%title', $title, $link); 
и исправляем их на
$link = limit_string(str_replace('%title', $title, $link), 30);
.

Наслаждайтесь. Значение 30 я подобрал эмпирически для дефолтной инсталляции Wordpress.

Update: Убрал из последней строки функции процент и закрывающую скобку.

мар. 27, 2006 // 05:40 | Комментарии (0)