Окт 07

Как поменять реквизиты доступа к БД в Asyst ShopScript

Как поменять реквизиты доступа к БД в Asyst ShopScript?

1. Если у вас есть пароль от WebAsyst Installer, то нужно просто зайти в него и найти требуемый раздел в настройках.

2. Если пароля от Installer'а нет, нужно искать и изменять записи в файлах kernel/wbs.xml и dblist/***.xml, об этом говориться в официальном руководстве, но там упущен один важный момент, без которого работать не будет. Необходимо изменить записи также в файле temp/scdb/.settings.***.

p.s. Вместо "***" в файлах подставляется идентификатор БД, чаще всего совпадающий с названием БД.

Сен 03

Переход по гиперссылке при клике на флеш-баннер. Улучшенное решение!

Я уже касался этой темы в посте http://blog.codething.ru/posts/69, но решение через jQuery.SWFObject Plugin оказалось не универсальным и, в частности, совсем не работает в браузере Google Chrome. В остальных браузерах тоже работает не очень хорошо, так, например, при наведении на баннер курсор мыши не становится активным, как при наведении на гиперссылку.

Что же делать?

После долгих поисков и изучения данной проблемы задача была решена! Правда для удобства, решение все же использует библиотеку jQuery.

<div id='b1' style='overflow: hidden; width: 200px; height: 200px;'>
	<object type="application/x-shockwave-flash" data="filename.swf" width="200" height="200">
		<param name="wmode" value="opaque">
		<param name="movie" value="filename.swf" />
	</object>
	<div id="b2" style="z-index: 100; position: absolute;" width="200" height="200">
		<a href="http://blog.codething.ru/"><img src="x.gif" width="200" height="200"/></a>
	</div>
</div>
<script>
	$(document).ready(function(){
		p = $('#b1').position();
		$('#b2').css("left", p.left+'px');
		$('#b2').css("top", p.top+'px');
	});
</script>

Теперь баннер отображается корректно, курсор активируется как положено.

Смысл решения очень прост. Сначала в документе выводится flash-баннер. Измеряются его координаты, относительно начала документа, и на это же самое место, но поверх баннера,  накладывается слой с прозрачной картинкой и ссылкой в нужное место. Все очень просто и красиво.

В приведенном коде размещается баннер filename.swf размером 200x200 px. Прозрачная картинка x.gif - однопиксельный gif-файл с прозрачностью.

Июн 22

WordPress — стартовый набор плагинов

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

  • Admin Favicon - позволяет установить изображение favicon для проекта. Про то, как установить favicon на любой сайт можно прочитать на сайте "Уголок веб-разработчика".
  • AdRotate - мощный рекламный движок, позволяющий организовать ротацию различных рекламных объявлений. Как сделать простейшую ротацию баннеров без использования плагина, мы уже писали.
  • Cyr-To-Lat - позволяет транслитерировать заголовки статей.
  • Fancybox - красиво разворачивает картинки на весь экран, не открывая при этом нового окна браузера. В основе плагина лежит программное решение FancyBox, обзор которого уже был в этом блоге.
  • Google XML Sitemaps - строит карту сайта для поисковиков в формате XML.
  • Invisible Captcha - решение от спама.
  • Social Share Buttons - быстрое добавление ссылки на сообщение в популярные в России соц.сети.
  • WP No External Links - делает ссылки в сообщении неиндексируемыми для поисковых машин.
  • Yet Another Related Posts Plugin - выстраивает список  записей похожих на текущую.
  • Youtuber - для быстрого размещения видео с YouTube.
Июн 07

Формируем PDF файл из PHP

Столкнулся недавно с задачей формирования PDF файла из PHP.  Немного погуглив нашел два программных решения: FPDF и TCPDF. Первое значительно компактнее второго, но мне не подошло, т.к. там имелись проблемы с русскими шрифтами. Шрифты для него необходимо как-то обрабатывать и включать в состав продукта, после чего можно работать. С этим разбираться не хотелось и поэтому я стал смотреть второй вариант - TCPDF. В кодировке UTF-8 всё отображается сразу нормально.

PDF-файл может формироваться разными способами, самый простой из которых -  формирование из HTML кода.  Правда HTML поддерживается лишь частично, но все основное есть и работает. Можно задавать стили и цвета текста, размещать картинки и таблицы. Для моей задачи этого было более чем достаточно.

Весьма просто создать PDF-файл из HTML кода средствами TCPDF, вот пример:

1. сначала копируете файлы TCPDF в необходимую папку на хостинге.

2.  пишете программный код.

<?
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// устанавливаем описание документа
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Test');
$pdf->SetTitle('Test');
$pdf->SetSubject('Test');
$pdf->SetKeywords('Test');

// выключаем заголовки, т.к. они нам не нужны
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// устанавливаем поля
$pdf->SetMargins(10,10,10,10);

// автоперенос на новую страницу
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// пропорционирование картинок
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// языковые настройки
$pdf->setLanguageArray($l);

// Устанавливаем шрифт
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 12, '', true);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// Вывод данных из HTML в PDF
$pdf->AddPage();
$s= '<h1>Привет мир!</h1><p>Это тестовый пример!</p>';
$pdf->writeHTML($s, true, false, true, false, '');
$pdf->Output('test.pdf', 'I');
?>

ВАЖНО! Файл примера должен быть записан в кодировке UTF-8! Иначе ничего не увидите в сгенерированном PDF-файле.

На сайте TCPDF имеется множество других примеров.

P.S. Если при запуске примеров Вы видите ошибку:

TCPDF ERROR: Some data has already been output, can't send PDF file

необходимо перед строками

require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');

вызвать функцию ob_end_clean().

Помогает. Почему-то так было на хостинге от Мастерхост, а на jino.ru сразу все нормально.

P.P.S. TCPDF распространяется по лицензии LGPL, следовательно может встраиваться (при соблюдении лицензионных требований) даже в коммерческие продукты.

Фев 21

Делаем гиперссылку при клике на флеш-баннер

Поначалу кажется странным, но проблема создания гиперссылки из флеш-объекта существует очень давно. Обычным тегом <A> никак нельзя создать гиперссылку с флеш-объекта. Не помогает и более хитрый вариант с <DIV onClick='location.href=""'>, потому что у флеш своя собственная активная зона на экране, где могут обрабатываться какие-то события, связанные с мышкой.

Как обойти эту проблему? Большинство людей советуют встроить ссылку в сам Flash-файл. Делается это очень просто - прямо в Adobe Flash - создается прозрачный слой-кнопка, которой прописывается обработчик события onRelease().

button.onRelease = function() {
getURL("http://www.codething.ru/");
};

Этот способ хорош лишь в том случае, если вы самостоятельно изготавливаете и Flash-ролик и сайт.

Если же вам приносят множество готовых флеш-роликов (чаще всего это баннеры), в которых ссылка явно не задана, то следует применять другой, более экзотический способ создания гиперссылки. Например, можно воспользоваться javascript библиотекой jQuery и её расширением jQuery SWFObject plugin.

Для этого выполним следующие действия:

1. Качаем jQuery с сайта http://jquery.com/
2. Качаем плагин jQuery SWFObject plugin с сайта http://jquery.thewikies.com/swfobject/ (заодно читаем там документацию и смотрим примеры).
3. Размещаем на странице нехитрый код:

<a href="http://www.codething.ru/">
 <div id="myflash"></div>
</a>
<script>
$(document).ready(
 function() {
  $('#myflash').flash(
  {
   swf: '/images/banner.swf',
   width: '120px',
   height: '120px'
  });
 }
);
</script>

4. Радуемся результату!