ShopCMS - загрузка фото A,B,C

Категория: Программим

Продолжаю свою работу с ShopCMS. На этот раз исправляем работу с фото. По умолчанию нужно для каждого типа фото указывать свое изображение.
Фотография A - маленькая превью
Фотография B - среднего размера
Фотография C - большая.
И это реально неудобно, три раза добавлять одно и тоже изображение. Нашел на одном форуме готовую модификацию. Но чтобы скачать ее, там мало зарегистрироваться. Еще надо пообщаться, накопить балов. В общем маразм, таких админов надо сразу отправлять в ад. Пусть там набивают посты.
У меня на такую ерунду времени нет, поэтому быстро написал свою модификацию.

ShopCMS не сохраняет русские названия

Категория: Программим

В общем довелось мне поработать с SHopCMS. Вроде бы все должно было пройти гладко, но вот на этапе установки возникла проблема, точнее на этапе настройки.
В настройках название сайта невозможно указать на русском языке. Также категории с русскими названиями невозможно создать.
Саппорт погрешил на БД, и на метод соединения с ней. На мое предположение об использовании каких-то устаревших функций не ответили.
В общем поковырявшись, виновник торжества был найден.
Это функция htmlspecialchars. Которая с версии php какой-то там, по умолчанию работает с utf-8 строками, а ShopCMS работает с cp1251. И чтобы все было корректно, нужно 3-м параметром указывать кодировку.
И так, меняем в строке 1364 файла /core/functions/functions.php:

Цитата:
return htmlspecialchars($_Data, ENT_QUOTES);

на
Цитата:
return htmlspecialchars($_Data, ENT_QUOTES,'cp1251');


И все сразу нормально заработает :)

Бекапы в ISPManager

Категория: Программим

Бекапы очень нужное дело, осознаешь это в полной мере только тогда, когда теряешь в одно мгновенье все.
Меня бекапы в ISPManager бесят потому, что тормозят систему. При создании задания на резервное копирование я указал уровень компрессии в 1. Минимальный. Не помогло. На скрине видно, что бекап просто нереально грузит систему.

http://dl1.joxi.net/drive/0003/3599/249359/150818/91efb9d00d.png


Покопавшись на форуме их поддержки и в описании конфигурации нашел следующее решение призванное помочь.

Стал тормозить сайт, перестал открываться

Категория: Программим

Сегодня обнаружил, что некоторые сайты стали жестко тупит и медленно открываться. Сайт грузиться частично или наполовину, потом замирает и через некоторое время наконец таки загружается.
Сразу закралось подозрения в тормозах внешних скриптов. С помощью Google Chrome и его инструментов для вебмастеров удалось быстро найти виновника торжества.
Это... барабанная дробь...

Звонили из Adobe, отправили письмо

Категория: Программим

http://www.aleksei.su/upload_files/images/_thb_29_97_00ae409dc56d14cbc7f2316dbd3d37f7.jpg


Сегодня в очередной раз звонил представитель Adobe. Всегда с ними жена разговаривала, а тут на попали, хоть послушал чего им надо.
Спрашивают, использую ли я программное обеспечение адобе. Ну конечно же не используем, в чем вопрос то :)

Используйте короткие записи if else

Категория: Программим

Вещи конечно банальные и очевидные. Но порой пишешь както, как быстрее, как привык. Потом возьмешь на вооружение более оптимальный вариант и думаешь, чего раньше как школота кодил... :)
Очень удобна конструкция короткой записи if else.
$var = (expresion ? true: false)

Например у меня части в коде есть такие вещи (образно):

http://www.aleksei.su/upload_files/images/29_93_0a1f27ccaf1f5150a6490f8586e1dd80.jpg

Корявенько, да? И это еще мягко сказано :)

http://www.aleksei.su/upload_files/images/29_93_a1ffa4a397bbb2ccb17d1247ceb62358.jpg

Так имхо поудобнее :)

Приведение к целому типу

Категория: Программим

Часто бывает нужно обработать переменную, переданную по GET или POST методу. И делаются всякие проверки, число ли это, а вдруг там sql инъекция или еще какая хрень... А потом бывает нужно еще проверить, число ли это.
Самый просто и удобный способ сделать например так:

Цитата:

$var = $_POST['var']*1;

Если значение имеется, и это число, мы получим в итоге число, если там любая другая хрень или значение неопределенно, то получим 0.

Скрытые символы или вред копипаста

Категория: Программим

Сижу разбираюсь с классом PHPExcel. Написал часть кода, работает замечательно. Переделал по инструкции, не работает. Да что за ерунда. Скопировал из документа 1 в 1. Не работает и все тут.
Думаю, ну мало ли, может русские символы затесались, взял скопировал имя объекта из куска рабочего кода в нерабочий. Не работает. :(
Мучился, скопировал всю строку. Часть заработала, часть нет. Должен возвращаться объект, внутри объекта создается, и возвращается, а уже у меня потом идет он Null и все тут.
Оказалось, что при копировании пробелы вставились как не пробелы, а как хрен пойми что, в общем пошли за имя переменной.

Цитата:

$objReader = PHPExcel_IOFactory::createReaderForFile($xls);
$objReader->setReadDataOnly(true);

В первой строке пробел перед равно был не пробелом, а каким то хитрым символом... но выглядел как пробел. Ну и ессно далее php ругался, мол че ты мне тут суешь, нет такого объекта.
Зла не хватает :angry:

JavaScript, проверка номера телефона

Категория: Программим

Кратенькая запись на сегодня. Задача: проверить при вводе номер телефона, чтобы ввели его нормально, без всякой биллерберды. Неплохой и вполне рабочий код был нагло скомунижен с сайта госуслуг :)
Поле ввода номера:

Цитата:
<input id="phone" type="text" name="phone" value=" 7" class="inputBasic" onkeydown="setTimeout(formatMBT, 50);" onkeyup="setTimeout(formatMBT, 50);" onkeypress="setTimeout(formatMBT, 50);" onblur="formatMBT();"/>

И обработчик на JavaScript:
Цитата:
<script type="text/javascript" language="JavaScript" charset="UTF-8">
function formatMBT() {
var out_str = $('#phone').val().replace(new RegExp('D ', 'g'), '');
var p1 = out_str.substr(1, 3);
var p2 = out_str.substr(4, 7);
if (p2.length > 0) {
out_str = ' 7(' p1 ')' p2;
} else if (p1.length > 0) {
out_str = ' 7(' p1;
} else {
out_str = ' 7';
}
$('#phone').val(out_str);
}

</script>


Небольшой нюанс. Вышеприведенный код использует для своей работы фреймворк jQuery. Не забывайте подключать :)

Server-status на Debian

Категория: Программим

http://www.aleksei.su/upload_files/images/_thb_29_88_0d106f0be337f9c3b019869f9df39a9e.jpg


В очередной раз потребовалось быстро узнать, что там по части соединений с apache на сервере. Как обычно запустил http://ip/server-status и как обычно увидел:
Цитата:
Forbidden

You don't have permission to access /server-status on this server.

И как обычно забыл напрочь, где это смотреть вообще. Каждый раз даю себе зарок, записать в блоге. Надоело, записываю :) (акутально для Debian, ISPManager, apache-itk)