Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
25 Октябрь 2013

Простой учёт событий на сайте в Яндекс Метрика

Ещё одно ТЗ — учёт показа баннеров.
Заказчик сам указал удобное ему решение — Яндекс Метрика, и предоставил необходимые вводные инструкции — я только реализовал это в Битриксе (кастомизация компонента на вывод нужного JavaScript кода)

Итак, в Яндекс Метрике в качестве цели можно, в том числе, указать выполнение на сайте специальной функции:
yaCounterXXXXXX.reachGoal(‘TARGET_NAME’);
Более подробно тут: http://help.yandex.ru/metrika/objects/reachgoal.xml

Соответственно, как любую JavaScript функцию — её можно «навесить» куда угодно — от клика на ссылку, до сабмита формы.
А показ баннера — событие возникающее при отображении странички.

Добавляем цель в Метрике и вуаля! — смотрим статистику 🙂

P.S. Добавочка — при не однократном (как в моём случае) вызове функций, следует использовать

иначе будет считаться статистика только последнего подключаемого баннера

рубрики: Полезности, Программирование | Комментарии (0)

23 Октябрь 2013

Как получить точную поисковую фразу при переходе с объявления в Яндекс.Директ ?

Новое ТЗ и решение, которым хочу поделиться с немногочисленными посетителями моего блога:

Итак, необходимо реализовать следующую фишку:
Серфер ищет в Яше, например «продажа автомобилей HONDA в Новосибирске»
ему высветилось наше объявление по ключевой фразе «продажа автомобилей»
серфер кликает и мы хотим перенаправить его на страницу локального поиска с фразой «продажа автомобилей HONDA в Новосибирске»

Первое неправильное решение:

Тут подробнее о передаче параметров
http://help.yandex.ru/direct/?id=1119167
На поиск на Вашем сайте выходим таким образом
http://site.ru/search/index.php?q=%E4%E5%EA%EB%E0%F0%E0%F6%E8%FF
т.е. параметр передаётся в переменную q
Соответственно, в директе при указании адреса в виде
http://site.ru/search/index.php?q={keyword}
мы будем попадать из директа в раздел поиск с ключевиком из директа без минус слов

Директ передаёт в keywords именно ключевую фразу, а не поисковый запрос. Т.е. «продажа автомобилей» !

А решение такое:
Хоть и ссылка с объявления имеет вид http://yabs.yandex.ru/count/QlMAyQ7r…кадабра …MAyQ7rA4K4
тем не менее при переходе на сайт в HTTP_REFERER имею Яшу с поисковым запросом в ?text=

далее — дело техники, вычленяем запрос регуляркой и подключаем поиск

рубрики: Полезности, Программирование | Комментарии (1)

23 Октябрь 2013

var_dump в лог файл — var_export

Мини заметочка для любителей кинуть, в лог-файл какую нибудь отладочную информацию:
(сделал небольшое открытие для себя)

Всё гениальное — просто 🙂

рубрики: Полезности, Программирование | Комментарии (0)

13 Сентябрь 2013

Битрикс и древовидные комментарии

Очередное ТЗ — подключить к сайту на Битриксе древовидные комментарии.
По началу рассматривался вариант с приобретением в маркете, но для начала решили попробовать бесплатный компонент древовидные комментарии к статьям comment.multilevel как пишет сам автор «основой стал компонент photogallery.detail.comment, из которого удалено все ненужное, а также добавлена возможность работать с кодами секций и элементов в режиме ЧПУ.»
Сразу отмечу, что для работы компонента потребуется модуль «Блоги» (для хранения комментариев) т.е. редакция продукта не ниже «Стандарт».
Далее всё по инструкции — ставим компонент, кастомизируем шаблон компонента.

P.S.
Премодерация комментариев включается в свойствах доступа блога.

рубрики: Bitrix, Полезности | 4 комментария

12 Сентябрь 2013

Парсинг XML формата CommerceML средствами PHP

Очередная задача — синхронизация цен на сайте по файлу-выгрузке из 1С 8.2.
В движке решил не копаться — найти цены в БД и напрямую их корректировать — ИМХО так будет проще, чем искать какие то сторонние спец.модули.
Вроде всё ясно — берём файл, парсим, апдейтим.
Как всегда не обошлось без НО.
Файл-выгрузка оказался в формате «CommerceML» в формате xml version=»1.0″ encoding=»UTF-16″ с кириллицей везде — даже в наименованиях секций.
В общем первые попытки парсинга с помощью simplexml и DomDocument не увенчались успехом, а вот XMLReader, как раз рассчитанный на обработку файлов больших объёмов (что нам и нужно — прайсы, как правило имеют особенность безгранично расти).

Пока не забыл — порекомендую отличнейшую статейку, найденную в процессе реализации задачи — XML для PHP-разработчиков: Часть 2. Расширенные методы парсинга XML — различные методы работы с XML, всё с примерами и описанием.

Далее: … так как порядок в файле всегда идёт АРТИКУЛ и далее ЦЕНА, то особенно заморачиваться с обработкой вложений я не стал … в итоге получился такой код:

рубрики: CMS, Полезности, Программирование | Комментарии (0)

11 Сентябрь 2013

Прием платежей на сайте. Робокасса плюс Битрикс … и другие

Итак — в эфире очередной обзорчик реализованной мной сегодня задачи, а конкретно:
Есть определенный сайт продающий информационный пакет (файлик).
Приём оплаты и рассылка файла была в ручном режиме:
ПОКУПАТЕЛЬ:
1. Заходим на сайт, читаем о способах оплаты, выбираем — вбиваем реквизиты, оплачиваем.
2. Даём знать о проведённой оплаты, ждём на мыло файл.
ПРОДАВЕЦ:
1. Получаем заявку — заходим в платежную систему, ищем оплату
2. Отправляем файлик на мыло оплатившего
3. При обновлении файла скидываем новую версию всем уже купившим.

При количестве купивших переваливших за 1000 уников процедура уже начала «напрягать»… и заказчик обратился ко мне с вопросом автоматизации процесса

1. Делаю автоматизацию на стороне сайта (загоняем скриптом оплативших пользователей в отдельную группу, которым даём возможность скачивать последнюю версию файла (с учётом кол-ва скачиваний))
2. Прикручиваем РОБОКАССУ для принятия платежей.

Платформа системы управления была БИТРИКС, но штатный интернет магазин я использовать не стал т.к. не позволила редакция продукта.
Соответственно, выбрал вариант прикручивания системы к любому движку на PHP.

Скачал демку, почитал документацию, настроил админку в панели робокассы
Далее всё предельно ясно и понятно:
Код в demo1.php формирует кнопку «оплатить» (этот код я перенёс «как есть») — далее всё на стороне робокассы.
По факту оплаты прилетает запрос на result.php куда я и запихал присвоение юзеру нужной группы
CUser::SetUserGroup($shp_item, array_merge(CUser::GetUserGroup($shp_item), array(9)));

В success.php поставил редирект на страничку где появляется ссылка на скачивание файла.

А теперь о подводном камне движка Битрик, с которым я немного поломал голову:

Сначала для проверки принадлежности использовал CSite::InGroup и всё вроде работало, пока не прикрутил Робокассу, которая меняет группу в онлайн режиме …
И тут-то оказалось, что данные хранятся в сессии поэтому необходим релогин на сайте, чтобы получить измененные данные! что меня в корне не устраивало
это как оказалось касается и всех методов получения группы глобального объекта $USER
Решение — запрос группы с передачей ID пользователя $arGroups = CUser::GetUserGroup($USER->GetID()) и проверка вхождения в массив нужной группы array_search($grpID, $arGroups)

Остальное прошло без запинок

рубрики: Bitrix, Полезности, Программирование | Комментарии (1)

10 Сентябрь 2013

PHP — кракозябры в subject при отправке письма фукнцией mail в кодировке utf-8

Сегодня ваял небольшой php скриптик по email рассылке (стандартная Битрикс не подошла, т.к. в процессе нужно было перегенерировать пароли и произвести ещё кое какие манипуляции).
Писал конечно же в кириллице, кодировку использовал utf-8 и собственно, столкнулся с проблемой:
При получении письма в теме были кракозябры (текст gmail видимо сам перекодировал — проблем не было).

Собственно, 3 минуты гугла и решение найдено

На всякий случай, код перепубликую у себя:

Читать полностью »

рубрики: Полезности, Программирование | Комментарии (0)

5 Сентябрь 2013

Битрикс. Учет скачиваний файла пользователями.

Итак, почти реализовал небольшое ТЗ — возможно кому-то пригодятся мои наработки…

Допустим, на сайте под управлением CMS Bitrix, необходимо определённому списку пользователей дать возможность скачивать определенный файл и фиксировать количество скачиваний.
Создаём группу для юзеров, которым можно скачивать (у меня получился ID=9)
На пользователей, вешаем пользовательское поле UF_CNT — куда будем складировать количество скачиваний файла.

Собственно — привожу содержимое скрипта, непосредственно «отдающего» нужный файл:

Ну и ссылочку на данный скрипт отдаём только «правильным» пользователям. Проверка та-же if ( CSite::InGroup( array($gID))) { ….. }

Да, ещё момент — прямое скачивание файла file-info.zip нужно запретить в конфе nginx-а, т.к. именно он отвечает за отдачу статики location = /paht/file-info.zip { deny all }
(далеко не сразу этот момент вспомнил когда не мог понять — почему не работает запрет на скачивание именно этого файла установленный мной в .htaccess при правильной обработке в нём других правил)

рубрики: Bitrix, CMS | Комментарии (1)

2 Сентябрь 2013

vipmaster.net — перспективный SEO форум

Итак, прошу любить и жаловать VIPMaster — Форум ВебМастера и SEO оптимизатора.
Молодой, перспективный SEO форум. Приятный интерфейс со всеми удобными «фенечками» на движке IP.Board
Помимо прямого направления поисковой оптимизации, довольно плотно обсуждаются темы сайтостроения (Web-программирования,Услуги вебмастера), конвертации траяфика (электронная коммерция), коммерция(купля/продажа) и другие не менее интересные темы.
Не буду скрывать, что статья рекламная — и даже наоборот сделаю на этом акцент! Т.к. это говорит о том, что форумом занимаются, форум продвигают и вкладывают в него средства, а это уже залог успеха!
По сути, по настоящему живых SEO форумов не так много, и надеюсь vipmaster.net достигнет высот уровня searchengines.ru!
Форум модерируемый — никакого левого «шлака» нет — всё чётко, по полочкам.
В итоге — рекомендую и даже больше — призываю поддержать ребят на старте!

P.S.
Сам уже зарегался и думаю стану постоянным посетителем.

рубрики: SEO, Администрирование, Вёрстка, Программирование, Реклама, Сайтостроение | Комментарии (1)

6 Август 2013

Ограничение POST запроса — режется количество переменных

С утра обратились за помощью — решение нашел не сразу, поэтому решил опубликовать.
Итак — в скрипт синхронизации интернет-магазина автоматом передаются POST запросом новые/обновленные данные по количеству позиций
(по хорошему это дело кидать в файле — но исторически сложилось, что работают через POST — посоветую переделать)
Со временем синхронизация сломалась из за того, что кол-во позиций с развитием магазина выросло до такого состояния, что не влазило в POST
Вычислил я это скинув принятый массив $_POST в файл и сверив с тем, что отправляется.
Итак, в моём случае пришлось увеличивать в php.ini переменные
max_input_vars
и до кучи
post_max_size

после чего всё заработало

рубрики: Программирование | 3 комментария