Модификации/фиксы Инстанта

Автор блога: Protomoto
Все рубрики (8)

Алфавитный указатель в статьях

Возникла необходимость навигации по статьям в категории через Алфавитный указатель (как в Универсальном каталоге)
Реализовал.
Есть: Алфавитный указатель, поддержка ЧПУ, а так же без ЧПУ, поддержка подкатегорий (ЧПУ вида site.com/tema1/tema1-1/tema1-1-1)
НЕТ: в админке не птички Выводить ли указатель - можно решить указанием другого шаблона вывода в настройках каталога

FIX: Прозрачность PNG при ресайзе

Добрый день. Предлагаю исправление "забытой Богом" библиотеки
/includes/graphic.inc.php
Исправлено поведение при обработке прозрачности в PNG: теперь при изменении размера картинки сохраняется прозрачность
Это актуально для всех ресайзов: аватарки, фотоальбомы, статьи и пр...
необходимо заменить функцию function img_resize

Субдомен имени пользователя (user.instantcms.ru)

Продолжаем усоциаливать инстант
Как сделать имена типа user.instantcms.ru
Открываем core/cms.php строка 1526
в конце функции detectURI(), перед "return $uri;"
вставить
Код PHP:
		//tarzan обработка субдоменов
		$inDB = cmsDatabase::getInstance();
		if (strpos($_SERVER['HTTP_HOST'],'www.')!==false){
			header('location: http://site.com'.$_SERVER['REQUEST_URI']);
			exit;
		}
			
		if (preg_match('/([a-z,A-Z,0-9,\-,\_]+)\.site\.com/', $_SERVER['HTTP_HOST'], $matches)){

			if (isset($matches[1])){
				$q = "SELECT id,login FROM cms_users WHERE login LIKE '".mysql_real_escape_string($matches[1])."' LIMIT 0,1";
				$result = $inDB->query($q) ;
				//если есть такой пользователь - обрабатываем
				if ($r = $inDB->fetch_assoc($result)){
					if ($_SERVER['QUERY_STRING']=='') {
						$uri='users/'.$r['login'];} //показываем страницу профиля
					elseif (!strstr($_SERVER['QUERY_STRING'],'users/'.$r['login'])){ 
					    //если запрошена страница вне профиля пользователя, перенаправляем в основной адрес
						header('location: http://site.com'.$_SERVER['REQUEST_URI']);
						exit;
					}	
				}
				
			}
		}
		
Естественно, в настройках хостинга должна быть включена обработка несуществующих субдоменов основным сайтом
Внимание! Данная модификация может негативную SEO-реакцию, т.к. порождается много субдоменов с одинаковыми description
По поводу SEO - не ко мне

примеры: http://1c.allmarkets.com.ua , http://incolor.allmarkets.com.ua/

Прямое имя пользователя (без /users/)

Nikitka:
А как можно сделать чтоб адрес выглядел не как сейчас например http://instantcms.ru/users/nikitka просто http://instantcms.ru/nikitka
открываем /core/cms.php

находим обработку компонента по умолчанию (строка 1565)

Код PHP:
//если компонент не существует, считаем что это content
            $this->uri = 'content/'.$this->uri;
            $this->is_content = true;
            return 'content';
заменяем его на это

Быстрый Lightbox

Как вы все знаете, в InstantCMS для вывода галереи используется Lightbox - очень хорошая вещь.
Но недавно задался вопросом - при просмотре слишком долго подгружается следующая картинка. Залез в код, начал дописывать...но стоп! Есть ведь тут загрузка ближайших картинок (следующей и предыдущей) и она работает (проверяем отключением Интернета - да следующая картинка уже есть в кеше). В чем же дело? Оказывается, вся проблема в "красоте" - т.е. в код заложены задержки
1. На показ нам процесса загрузки
2. На эффектное изменение размера лайтбокса
3. На эффектное центрирование лайтбокса
В результате мы смотрим не фотки, а эффекты лайтбокса
Поэтому, я перелопатил код и поубирал лишние задержки.
Пример работы - здесь http://shoka.com.ua/photos/101
Необходимо скачать файл, разархивировать, и заменить его на сайте includes/jquery/lightbox/js/jquery.lightbox.js
Качаем файл здесь

Карусель топ-товаров

Разработал модуль "Карусель товаров" (анимированный)

Разработка заключалась в объединении модуля топ-товаров каталога (mod_uc_popular) с java-script каруселью jCarousel (http://sorgalla.com/jcarousel/)

Закрыть /users и подобные страницы

Вот, зарегался (повторно) в Инстанте, и меня сразу же буквально в аське нашел человек, которому интересен Инстант. Привожу ответ на его вопрос (может кому-то пригодится)
Как закрыть страницу /users (либо аналогичные)