А если подробнее, то иногда необходимо реализовать такое поведение группы чекбоксов, что бы они вели себе как радио батоны. Т.е если мы отмечаем один чекбокс то значение checked снимается с других, вобщем что бы нельзя было отметить больше одного checkbox в группе. Нашел хорошее решение на просторах интернета
понедельник, 31 октября 2011 г.
Диапазон значений для INPUT поля
Иногда хочется установить некий диапазон для значений вводимых в поле, например не меньше 10 и не больше 20, сделать это можно разными способами, а можно просто воспользоваться jQuery плагином jstepper
У плагина есть все необходимые настройки, что бы настроить его под себя, работать с ним крайне легко и приятно.
У плагина есть все необходимые настройки, что бы настроить его под себя, работать с ним крайне легко и приятно.
вторник, 25 октября 2011 г.
PHP удалить все элементы массива со значением NULL
Есть много разных способов что бы удалить пустые или NULL элементы массива, но мне кажется что самый простой способ сделать так:
array_filter($array, 'strlen');
и всё - прощайте элементы массива со значением NULL
array_filter($array, 'strlen');
и всё - прощайте элементы массива со значением NULL
Если же необходимо удалить все пустые элементы, элементы NULL и элементы FALSE то вызываем ф-цию без аргумента
array_filter($array);
суббота, 22 октября 2011 г.
Cs-cart изменение внешнего вида отображения товаров
Только внимательный пользователь заменит что такого варианта отображения по умолчанию нет в CS-CART. Это компактный список в котором вместо ячейки Артикул я вставил поле Количество. Конечно же для большинства магазинов пригодится и Артикул, но в данном случае мне он был не нужен. Согласитесь ведь такой вид отображения очень удобен для магазинов с большим количеством товаров, рассчитаных на массовую закупку товаров.
Как вывести вино с обоев.
В моем случае выводить пришлось красное вино. В процессе гулянки было оставлено пятно, не маленькое такое, от красного вина на обоях. Думал что обоям хана и придется переклеивать, начал гуглить и собсвенно все писали так же - обоям хана. Но где то нашел один совет, что необходимо промокнуть пятно ванишем. Купил маленькую пачку Vanish - около 7грн, сделал раствор, намочил им тряпку и начал промокать обои, и о чудо, пятна как не бывало, аж офигел, не осталось не одного следа, при том что с момента запачкивания обоев прошло уже около суток.
воскресенье, 16 октября 2011 г.
Social Engine 4 защита от спама, ReCaptcha
Если вас достали гребанные спам боты, а родная капча не спасает от них, боты ее легко пробивают, в отличии от людей, то хорошим решением будет установить ReCaptcha вместо обычной, темболее что движок ее поддерживает, странно что нет надстройки в админке, но делается все очень просто. Идем по ссылке https://www.google.com/recaptcha/admin/create добавляем свой сайт и получаем ключи.
Далее открываем файлик application/modules/User/Form/Signup/Account.php в редакторе и ищем следующий код
и меняем его на следующий
Далее открываем файлик application/modules/User/Form/Signup/Account.php в редакторе и ищем следующий код
if (Engine_Api::_()->getApi('settings', 'core')->core_spam_signup) {
$this->addElement('captcha', 'captcha', array(
'description' => '_CAPTCHA_DESCRIPTION',
'captcha' => 'image',
'required' => true,
'allowEmpty' => false,
'captchaOptions' => array(
'wordLen' => 6,
'fontSize' => '30',
'timeout' => 300,
'imgDir' => APPLICATION_PATH . '/public/temporary/',
'imgUrl' => $this->getView()->baseUrl().'/public/temporary',
'font' => APPLICATION_PATH . '/application/modules/Core/externals/fonts/arial.ttf'
)));
}
if (Engine_Api::_()->getApi('settings', 'core')->core_spam_signup) { $this->addElement('captcha', 'captcha', array( 'description' => '_CAPTCHA_DESCRIPTION', 'captcha' => 'reCaptcha', 'required' => true, 'allowEmpty' => false, 'captchaOptions' => array( 'pubKey' => 'Your Public Key', 'privKey' => 'Your Private Key', 'wordLen' => 6, 'fontSize' => '30', 'timeout' => 300, 'imgDir' => APPLICATION_PATH . '/public/temporary/', 'imgUrl' => $this->getView()->baseUrl().'/public/temporary', 'font' => APPLICATION_PATH . '/application/modules/Core/externals/fonts/arial.ttf' ))); }
суббота, 8 октября 2011 г.
Xbox 360 не открывается привод, мигает лампочка питания
Что общего у фраз из заголовка? То что это случилось с моим Xbox 360. Сразу скажу что финал у истории счастливый, но для тех кому интересны детали - история ниже.
Решил прошить Xbox 360 на LT+ 2.0, до этого недели 2 назад самостоятельно прошился на LT+ 1.91 без каких либо проблем.
Поэтому смело разобрал свой бокс, подсоединился к нему SATA кабелем, запустил Jungle Flasher, собрал прошивки и нажал заветную кнопку LiteOn Erase (да да привод LiteOn). После нажатия кнопки согласно инструкции быстренько выдернул питание с привода и всунул обратно, но 72й код привод мне так и не вернул, попробовал еще разок, но на этот раз у меня система зависла наглухо после возврата питания в привод бокса.
Подождав минут 5, отсоеденил сата кабель от привода, и через минуту комп оклимался, перезапустил бокс, вставил сата кабель и опять - система виснет. А на боксе постоянно быстро мигает кнопка питания(та что по центру). Тут я и заподозрил неладное... Нообосрался испугался тогда когда нажав на кнопку извелечения диска, ничего не произошло, привод никак не реагировал. Отсоеденив SATA кабель, что б мой ПК развис полез в гугл искать похожие случаи. И тут как бы все стало еще грустнее - на всех более-менее толковых форумах люди ставили одинаковый диагноз - или хана приводу, или же хана контроллеру. Оба варианта мне не подходили. Решив немного надурить бокс, попробовал перезагрузить систему с включенным SATA кабелем в бокс, но не тут то было - система просто не грузилась. Я был уже практически в отчаянии, когда в голову пришла замечательная идея.
С отсоединенным кабелем от бокса я запустил Jungle Flasher, выбрал порт на котором должен висеть привод, нажал еще раз LiteOn Erase и быстро вставил SATA кабель в привод, и о чудо ! Привод вернул статус 72, я нажал кнопочку Write и прошивка залилась. Перезагрузил привод и лампочка больше не мигала, попробовал нажать кнопку извлечения лотка привода, и УРА - он выехал. Скрутил бокс, засунул туда Gears of War 3 и все как по маслу.
Вот такой настоящий хорор для владельцев бокса :) Но теперь на консоли последняя прошивка и не думаю что в ближайшее время, а может и вообще, компания Microsoft решится на разработку новой системы защиты. После провала последней надеюсь они разочаровались.
Так что у кого консоль после прошивки издает такие же симптомы - быстро мигает лампочка посреди кнопки питания и не работает привод. Не спешите отчаиваться и бежать к мастеру. Попробуйте мой метод. Удачи!
Решил прошить Xbox 360 на LT+ 2.0, до этого недели 2 назад самостоятельно прошился на LT+ 1.91 без каких либо проблем.
Поэтому смело разобрал свой бокс, подсоединился к нему SATA кабелем, запустил Jungle Flasher, собрал прошивки и нажал заветную кнопку LiteOn Erase (да да привод LiteOn). После нажатия кнопки согласно инструкции быстренько выдернул питание с привода и всунул обратно, но 72й код привод мне так и не вернул, попробовал еще разок, но на этот раз у меня система зависла наглухо после возврата питания в привод бокса.
Подождав минут 5, отсоеденил сата кабель от привода, и через минуту комп оклимался, перезапустил бокс, вставил сата кабель и опять - система виснет. А на боксе постоянно быстро мигает кнопка питания(та что по центру). Тут я и заподозрил неладное... Но
С отсоединенным кабелем от бокса я запустил Jungle Flasher, выбрал порт на котором должен висеть привод, нажал еще раз LiteOn Erase и быстро вставил SATA кабель в привод, и о чудо ! Привод вернул статус 72, я нажал кнопочку Write и прошивка залилась. Перезагрузил привод и лампочка больше не мигала, попробовал нажать кнопку извлечения лотка привода, и УРА - он выехал. Скрутил бокс, засунул туда Gears of War 3 и все как по маслу.
Вот такой настоящий хорор для владельцев бокса :) Но теперь на консоли последняя прошивка и не думаю что в ближайшее время, а может и вообще, компания Microsoft решится на разработку новой системы защиты. После провала последней надеюсь они разочаровались.
Так что у кого консоль после прошивки издает такие же симптомы - быстро мигает лампочка посреди кнопки питания и не работает привод. Не спешите отчаиваться и бежать к мастеру. Попробуйте мой метод. Удачи!
CS-cart нормальные SEO url для русского языка
Cs-cart отличный скрипт интернет-магазина, и SEO модуль там неплохой, но вот из-коробки он не умеет делать транслит русского языка. Т.е если название товара у нас на русском то он сгенерирует нам какой то бредовый урл, его потом конечно же можно изменить ручками, но кому это нужно, если это достаточно легко исправить.
Ищем /addons/seo/func.php
Там ищем функцию function fn_create_seo_name(
в ней комментируем строку $_object_name = fn_generate_name($object_name);
т.е делаем что бы стало так #$_object_name = fn_generate_name($object_name);
и под ней добавляем
$url = translitIt($object_name);
$_object_name = preg_replace('/[^A-Za-z0-9_\-]/', '', $url);
Теперь необходимо в этот файлик добавить саму функцию translitIt.
Давайте опустимся в самый низ файлика и перед ?>
Добавим нашу функцию
саму функцию транслита можете взять любую другую, которая вам больше по нраву, но принцип то вы поняли :)
Ищем /addons/seo/func.php
Там ищем функцию function fn_create_seo_name(
в ней комментируем строку $_object_name = fn_generate_name($object_name);
т.е делаем что бы стало так #$_object_name = fn_generate_name($object_name);
и под ней добавляем
$url = translitIt($object_name);
$_object_name = preg_replace('/[^A-Za-z0-9_\-]/', '', $url);
Теперь необходимо в этот файлик добавить саму функцию translitIt.
Давайте опустимся в самый низ файлика и перед ?>
Добавим нашу функцию
function translitIt($str)
{
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
"Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
" "=> "-", "."=> "", "/"=> "_"
);
return strtr($str,$tr);
}
саму функцию транслита можете взять любую другую, которая вам больше по нраву, но принцип то вы поняли :)
воскресенье, 2 октября 2011 г.
Парсинг xls, Spreadsheet_Excel_Reader oleread.inc и несколько часов головной боли.
Писал очередной модуль для Cs-cart, модуль для импортирования товаров из Excel файлов, родной модуль импорта не устраивает, поэтому было решено написать свой.
Все шло гладко и спустя пару часов модуль был готов, успешно протестирован на моем тестовом сервере и ничего не предвещало беды. Но вот когда залил и установил его на боевой сервер, при попытке импорта файла сервер начал кричать
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes) in /xxxxxxxx/Excel/oleread.inc on line 27
Это показалось очень странным, так как тестовый файлик всего 25кб, а на сервере для выполнения PHP скриптов отведено 64Мб.
Увеличение памяти в php.ini ничего не давало.
Много было чего предпринято и на что только не грешили, ничего не помогало..
Но вот чуть позже удалось получить от скрипта что-то новенькое, ругань такого содержания
Все шло гладко и спустя пару часов модуль был готов, успешно протестирован на моем тестовом сервере и ничего не предвещало беды. Но вот когда залил и установил его на боевой сервер, при попытке импорта файла сервер начал кричать
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes) in /xxxxxxxx/Excel/oleread.inc on line 27
Это показалось очень странным, так как тестовый файлик всего 25кб, а на сервере для выполнения PHP скриптов отведено 64Мб.
Увеличение памяти в php.ini ничего не давало.
Много было чего предпринято и на что только не грешили, ничего не помогало..
Но вот чуть позже удалось получить от скрипта что-то новенькое, ругань такого содержания
Notice: Uninitialized string offset: 2199023255040 in xxx/oleread.inc on line 27
И тут уже мне помог великий Google, оказывается что на 64 битной системе функцияfunction GetInt4d($data, $pos) { return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24); }
работает не корректно, так как используются битовые операции которые завязаны на 32х битные процессоры, и лечиться беда эта изменением функции на следующую:function GetInt4d($data, $pos) { $value = ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24); if ($value>=4294967294) { $value=-2; } return $value; }
Вроде как в последних версиях phpexcelreader эту багу починили, но она определенно потрепала мне нервы!jQuery библиотека пользовательских интерфейсов
Нашел сегодня в сети интересную библиотеку для создания UI (user interface).
Пока что не работал с ней, но демо очень понравилось и большой плюс конечно же что она использует jQuery. ExtJS несомненно красивее, но в нем я не силен, и не смог толком осилить, толи из-за нехватки времени, толи из-за отсутствия нормально документации.
Демо: http://www.jeasyui.com/demo/index.php
Думаю может все-таки наберусь терпения и напишу свою CRM для фриланса, уже много раз начинал, но так и не закончил, а вот эта библиотека мне думаю поможет в построении интерфейсов.
Пока что не работал с ней, но демо очень понравилось и большой плюс конечно же что она использует jQuery. ExtJS несомненно красивее, но в нем я не силен, и не смог толком осилить, толи из-за нехватки времени, толи из-за отсутствия нормально документации.
Демо: http://www.jeasyui.com/demo/index.php
Думаю может все-таки наберусь терпения и напишу свою CRM для фриланса, уже много раз начинал, но так и не закончил, а вот эта библиотека мне думаю поможет в построении интерфейсов.
Подписаться на:
Сообщения (Atom)