Мар 302011
 

Формирование этого сообщения проистекает в файле  /includes/classes/main.php со строки 55

function getShippingLink()  {if (SHOW_SHIPPING == ‘true’) { return ‘ ‘.SHIPPING_EXCL.'<a href=»‘. vam_href_link(FILENAME_POPUP_CONTENT, ‘coID=’.SHIPPING_INFOS) .'» target=»_blank» onclick=»window.open(\» . vam_href_link(FILENAME_POPUP_CONTENT, ‘coID=’.SHIPPING_INFOS) . ‘\’, \’popUp\’, \’toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=395,height=320\’); return false;»>’ .SHIPPING_COSTS. ‘</a>’;

}
return;

Где

lang/russian/russian.php:443: define(‘SHIPPING_EXCL’,’+’);
/includes/filenames.php:88: define(‘FILENAME_POPUP_CONTENT’, ‘popup_content.php’)
lang/russian/admin/configuration.php:356: define(‘SHIPPING_INFOS_DESC’ , ‘ID код информационной страницы с информацией о доставке’);
t/lang/russian/admin/configuration.php:357: define(‘SHIPPING_INFOS_TITLE’ , ‘ID код страницы с информацией о доставке’);
/lang/russian/russian.php:444: define(‘SHIPPING_COSTS’,’доставка’)

Мар 282011
 

Отсель http://blog.m-solutions.com.ua/2010/10/webdev/webproducts/ecommerce/vamshop/dobavlyaem-pokaz-pop-up-kartinok-v-listinge-tovarov/#more-403

Короткая заметка о том как в VamShop-e сделать просмотр увеличенных картинок в листинге товаров.

С недавних версий в вамшопе скрипт вывода картинок изменился на fancybox кому как но мне он нравится больше лайтбокса.

Для добавления наших попап картинок нужно проделать следующее:
1. Подключаем jquery & fancybox для всех страниц магазина, по умолчанию подключен только на странице карточки товара.
Для этого в файле includes/header.p

<?php
if (strstr($PHP_SELF, FILENAME_PRODUCT_INFO)) {
?>
<script type=»text/javascript» src=»jscript/jquery/jquery.js»></script>
<link rel=»stylesheet» type=»text/css» href=»jscript/jquery/plugins/fancybox/jquery.fancybox-1.2.5.css» media=»screen» />
<script type=»text/javascript» src=»jscript/jquery/plugins/fancybox/jquery.fancybox-1.2.5.pack.js»></script>
<script type=»text/javascript»>
$(document).ready(function() {
$(«a.zoom»).fancybox({
«zoomOpacity»     : true ,
«overlayShow»     : false,
«zoomSpeedIn»     : 500,
«zoomSpeedOut»      : 500
});
});
</script>
<?php
}
?>

изменяем на:

<script type=»text/javascript» src=»jscript/jquery/jquery.js»></script>
<link rel=»stylesheet» type=»text/css» href=»jscript/jquery/plugins/fancybox/jquery.fancybox-1.2.5.css» media=»screen» />
<script type=»text/javascript» src=»jscript/jquery/plugins/fancybox/jquery.fancybox-1.2.5.pack.js»></script>
<script type=»text/javascript»>
$(document).ready(function() {
$(«a.zoom»).fancybox({
«zoomOpacity»     : true,
«overlayShow»     : false,
«zoomSpeedIn»     : 500,
«zoomSpeedOut»      : 500
});
});
</script>

далее к примеру если нужно добавить pop-up на главную страницу в новинках то в файле /templates/vamshop/module/new_products_default.html код:

{if $module_data.PRODUCTS_IMAGE}<a href=»{$module_data.PRODUCTS_LINK}»><img src=»{$module_data.PRODUCTS_IMAGE}» alt=»{$module_data.PRODUCTS_NAME}» title=»{$module_data.PRODUCTS_NAME}» /></a><br />{/if}

изменяем на

{if $module_data.PRODUCTS_IMAGE}
<a href=»{$module_data.PRODUCTS_IMAGE|replace:’thumbnail_images’:’popup_images’}»>
<img src=»{$module_data.PRODUCTS_IMAGE}» alt=»{$module_data.PRODUCTS_NAME}» title=»{$module_data.PRODUCTS_NAME}» />
</a><br />
{/if}

Такое же можно сделать и для рекомендуемых и просто для листинга товаров, действия аналогичные.

VaMshop, где какие картинки поклодены и как выводятся.

 VaM shop  Комментарии к записи VaMshop, где какие картинки поклодены и как выводятся. отключены
Мар 272011
 

на странице поиска картинки по умолчанию выводятся из папки /images/product_images/info_images

вывод идет через файл /includes/classes/product.php

в конце файла функция

function productImage($name, $type) {switch ($type) {
case 'info' :
$path = DIR_WS_INFO_IMAGES;
break;
case 'thumbnail' :
$path = DIR_WS_THUMBNAIL_IMAGES;
break;
case 'popup' :
$path = DIR_WS_POPUP_IMAGES;
break;
}if ($name == '') {
if ($this->useStandardImage == 'true' && $this->standardImage != '')
return $path.$this->standardImage;
} else {
// check if image exists
if (!file_exists($path.$name)) {
if ($this->useStandardImage == 'true' && $this->standardImage != '')
$name = $this->standardImage;
}
return $path.$name;
}
//return $path.$name;
}

Ежели поставить и разкомментировать красную фенечку и у казать вручную $path, то мона задать жесткую ссылу на конкретную папку с картинками.

Вывод на страницу с выбранным товаром идёт через  includes/modules/product_info.php

вот через этот кусочек

if ($product->data['products_image'] != '') 
 $image = DIR_WS_INFO_IMAGES.$product->data['products_image'];
 
// koment 27.03.2011 G/White       if (!file_exists($image)) $image = DIR_WS_INFO_IMAGES.'../noimage.gif'; 
 
 $info->assign('PRODUCTS_IMAGE', $image); 

 $image_pop = DIR_WS_POPUP_IMAGES.$product->data['products_image'];
 $info->assign('PRODUCTS_POPUP_IMAGE', $image_pop);
 
 //mo_images - by Novalis@eXanto.de 
 if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') { 
 $connector = '/'; 
 }else{ 
 $connector = '&'; 
 } 
 $products_popup_link = vam_href_link(FILENAME_POPUP_IMAGE, 'pID='.$product->data['products_id'].$connector.'imgID=0');
if (!is_file(DIR_WS_POPUP_IMAGES.$product->data['products_image'])) $products_popup_link = '';
$info->assign('PRODUCTS_POPUP_LINK', $products_popup_link); 

 $mo_images = vam_get_products_mo_images($product->data['products_id']); 
 if ($mo_images != false) {
 $info->assign('PRODUCTS_MO_IMAGES', $mo_images);
 foreach ($mo_images as $img) {
 $products_mo_popup_link = DIR_WS_POPUP_IMAGES . $img['image_name'];
if (!file_exists(DIR_WS_POPUP_IMAGES.$img['image_name'])) $products_mo_popup_link = '';
 $mo_img[] = array(
 'PRODUCTS_MO_IMAGE' => DIR_WS_INFO_IMAGES . $img['image_name'],
 'PRODUCTS_MO_POPUP_IMAGE' => $products_mo_popup_link,
 'PRODUCTS_MO_POPUP_LINK' => $products_mo_popup_link);
 $info->assign('mo_img', $mo_img);
 }
 } 
 //mo_images EOF


Страница с информацией по отдельной детали формируется в /templates/XXXX/module/product_info_vl.html


Wine@etersoft Описание встроенных программ диагностики

 Ubuntu, wine@etersoft, Всяческие настройки  Комментарии к записи Wine@etersoft Описание встроенных программ диагностики отключены
Мар 222011
 

Отсель http://cgroup.drohobych.com.ua/index.php?option=com_content&task=view&id=113&Itemid=128&limit=1&limitstart=22

Тестирование работы блокировок

Описание winelocktest, предназначенной для проверки работы взаимных блокировок.

winelocktest запускается под root

Результат испытаний блокировок оформляется в виде двухмерной таблицы, где каждая ячейка соответствует определённой комбинации режимов открытия и разделения файлов

  • G_R- открытие на чтение
  • G_W- открытие на запись
  • S_R- разрешение на чтение другим
  • S_W- разрешение на запись другим

В каждой ячейке может быть до трёх обозначений.

Первое:

  • l (при запуске в режиме тестирования между пользователями)- работают POSIX-блокировки на файл
  • u — режим запуска самостоятельный и POSIX-блокировки не проверяются
  • F — драйвер файловой системы не сбрасывает все блокировки при закрытии одного из дескрипторов на файл, как это должно быть согласно POSIX (появляется при работе через CIFS, значения не имеет)

Второе: Успешность проверки на взаимное открытие файлов разными пользователями:

  • V- разрешено и совпадает с тем, как должно быть
  • o- не разрешено, а должно бы
  • C- разрешено, но не совпадает с тем, как должно быть

Третье: Успешность работы блокирования

  • L- сработала блокировка (блокирование области файла через LockFile работает)
  • X- не сработала блокировка (программы (пользователи) “не видят” друг друга)

Правильное поле должно выглядеть либо как “l ” (“u ”), либо как “lVL” (“uVL”), все другие случаи являются ошибкой.

См. также http://wiki.winehq.org/FileLocking

WINE@Etersoft 1.0. Руководство пользователя

 Ubuntu, wine@etersoft, Всяческие настройки  Комментарии к записи WINE@Etersoft 1.0. Руководство пользователя отключены
Мар 222011
 

отсель http://cgroup.drohobych.com.ua/index.php?option=com_content&task=view&id=113&Itemid=128&limit=1&limitstart=6

Настройка совместной работы по протоколу CIFS

WINE@Etersoft позволяет настроить совместное использование файловой базы данных в гетерогенной среде. В качестве файлового сервера при этом может быть использован SAMBA 3.0.14 и выше, Windows 2000 и выше, или другой файловый сервер, работающий по протоколу CIFS. При этом используется специальный модуль ядра Linux (CIFS@Etersoft), модифицированный для корректной работы WINE. Поставляется он в пакете etercifs.

Настройка Linux/Samba-сервера для совместной работы по протоколу CIFS

Никаких особенных настроек делать не требуется. Если у вас сервер уже настроен и работает с Windows-клиентами, то он будет работать и с WINE@Etersoft.

Настройке Samba посвящено множество статей в Интернете. Вот некоторые из них:

http://www.opennet.ru/docs/RUS/samba_win2000/

http://www.linuxfocus.org/Russian/March2002/article177.shtml

http://www.citforum.ru/operating_systems/linux/samba/

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

Советы по настройке SAMBA-сервера

Конфигурационный файл сервера smb.conf обычно находится в /etc/samba.

Рекомендуется, чтобы oplocks были включены (включены по умолчанию)- это улучшит производительность в монопольном режиме. kernel oplocks (включены по умолчанию) можно выключить, это немного снизит загрузку на систему. Включенные логи (log level в значении больше 0) могут в несколько раз замедлить производительность. Проверьте, что указано use sendfile = yes. Остальные параметры Таким образом пример оптимальных настроек может быть таким:

; oplocks = yes
kernel oplocks = no
use sendfile = yes
log level = 0

Остальные параметры по поводу locks/oplocks должны быть установлены по умолчанию. Параметр strict sync включает выполнение команд по сбросу буфера на диск (flush). По умолчанию он выключен, и это ускоряет работу.

Частой проблемой является несоответствие прав, под которым обращается самба-сервер, с правами на файлы, к которым он обращается. Например, при использовании security = share и обращении к серверу без указания пользователя/пароля он может обращаться к файлам от имени пользователя nobody или pcguest, которые вряд ли имеют права на изменение разделяемых файлов.

В примере ниже Самба с ресурсом sharewine всегда будет обращаться от имени wine: winetester к файлам в каталоге/var/local/share

[sharewine]
path = /var/local/share
public = yes
force user = wine
force group = winetester
writable = yes
guest ok = yes

Настройка Linux-клиентов для совместной работы по протоколу CIFS

Настройка происходит в два этапа: установка специального собранного модуля ядра CIFS и монтирование общего сетевого ресурса.

Подготовка модуля ядра CIFS@Etersoft

Начиная с версии WINE@Etersoft 1.0.9 для работы с CIFS необходимо использовать пакет etercifs версии 3.5 или выше.

Для корректной совместной работы необходимо установить пакет etercifs и задействовать модуль CIFS ядра Linux.

Если имеются смонтированные по протоколу CIFS сетевые ресурсы, необходимо прежде их размонтировать командой # umount <точка монтирования>

# service etercifs restart

Такой ответ означает, что в данный момент имеются ресурсы, смонтированные по протоколу CIFS:

Unloading CIFS kernel module... ERROR: Module cifs is in use [FAILED]
Removing CIFS kernel module... ERROR: Module cifs is in use [FAILED]

Просмотреть список смонтированных ресурсов можно командой mount. После успешного размонтирования необходимо ещё раз выполнить команду service etercifs restart

Unloading CIFS kernel module...          [ DONE ]
Loading CIFS kernel module... cifs from Etersoft is not found,
you can try compile it with 'service linux-cifs build' command.  [FAILED]

Перед использованием модуля ядра его необходимо скомпилировать. Если команда service etercifs restart завершилась ответом, показанным выше, необходимо собрать модуль CIFS для Вашего ядра командой service etercifs build. Для этой операции Вам потребуется компилятор GCC и заголовочные файлы ядра. Если заголовочные файлы отсутствуют, Вам будет предложено название пакета, который надо установить. Для систем Debian и Ubuntu управление сервисами производится прямым запуском скрипта /etc/init.d/etercifs. Так для сборки модуля ядра нужно выполнить команду /etc/init.d/etercifs build.

# service etercifs build

Ответ такого вида означает отсутствие заголовочных файлов ядра, необходимых для сборки модуля CIFS@Etersoft для Вашего ядра.

Build for 2.6.18-ovz-smp-alt12 Linux kernel
(headers in /lib/modules/2.6.18-ovz-smp-alt12/build)
Error: no kernel headers found at /lib/modules/2.6.18-ovz-smp-alt12/build
Please install package
        kernel-headers-modules-XXXX for ALT Linux
        kernel-devel-XXXX for FCx / ASP Linux
        kernel-source-stripped-XXXX for Mandriva 2007
        linux-headers for Debian / Ubuntu
        kernel-source-XXXX for SuSe
        kernel-source-XXXX for Slackware / MOPSLinux
or use KERNSRC variable to set correct location
Exiting...

После установки необходимого пакета с заголовочными файлами выполните команду service etercifs build ещё раз.

Build for 2.6.18-std-smp-alt6 Linux kernel
(headers in /lib/modules/2.6.18-std-smp-alt6/build)
We in ALT Linux, use GCC 4.1
make: Entering directory `/usr/src/linux-2.6.18-std-smp-alt6'
  CLEAN   /usr/src/linux-cifs/.tmp_versions
make: Leaving directory `/usr/src/linux-2.6.18-std-smp-alt6'
make: Entering directory `/usr/src/linux-2.6.18-std-smp-alt6'
  CC [M]  /usr/src/linux-cifs/sess.o
...
  LD [M]  /usr/src/linux-cifs/cifs.o
  Building modules, stage 2.
  MODPOST
  CC      /usr/src/linux-cifs/cifs.mod.o
  LD [M]  /usr/src/linux-cifs/cifs.ko
make: Leaving directory `/usr/src/linux-2.6.18-std-smp-alt6'
Copying built module to /lib/modules/linux-cifs

Если присутствует строчка Copying built module to /lib/modules/linux-cifs, значит, что сборка завершилась успешно, и можно смело загружать модуль командой service etercifs restart. В итоге должно быть следующее:

Unloading CIFS kernel module...            [ DONE ]
Removing CIFS kernel module...            [ DONE ]

При вызове build можно указать путь к заголовочным файлам ядра для сборки: KRNSRC=/usr/src/путь service etercifs build. Или только версию ядра: KERNELVERSION=2.6.26-std-pae /etc/init.d/etercifs build.

Монтирование сетевого ресурса

Сетевой ресурс можно монтировать либо для каждого пользователя персонально (тогда права доступа будут определяться сервером), либо для всех сразу- при условии что пользователи на локальной машине входят в одну группу, указанную при монтировании (доступ к ресурсу станет определяться местными настройками), а также без контроля прав. Примеры монтирования приведены ниже. Вам потребуется установить пакет, содержащий команду mount.cifs. Для систем на основе Debian/Ubuntu она находится в пакете smbfs.

Для монтирования удалённого CIFS-ресурса необходимо с правами пользователя root выполнить команду:

# mount -t cifs //<сервер>/<ресурс> <локальный каталог> \
         -o user=,pass=,file_mode=0660,dir_mode=02770,uid=,gid=,iocharset=utf8

file_mode=0660 определяет необходимые права на запись/чтение файлов пользователю и указанной (через параметр gid) группе. dir_mode=2770 определяет необходимые права на запись/чтение каталогов пользователю и указанной (через параметр git) группе. iocharset=utf8 определяет кодировку отображаемых имен файлов и каталогов (должна соответствовать кодировке локали в вашей системе).

Если монтировать с параметром noperm, то система будет игнорировать права доступа к файлам. Если разграничение доступа к базе не очень важно, это наиболее удобный вариант для совместной работы разных терминальных пользователей с базой.

# mount -t cifs //<сервер>/<ресурс> <локальный каталог> -o noperm,user=,pass=

Монтирование с параметром credentials=<имя файла> позволяет считывать дополнительные параметры монтирования из указанного файла. Если user и passwd не указываются, тогда авторизация на сервере производится от имени пользователя guest. Если не указан пароль, система спросит его в любом случае.

После этого следует создать новый виртуальный диск-каталог в ~/.wine/dosdevices, который будет указывать на локальный каталог, куда смонтирована файловая система. Некоторые программы требуют доступности именно в виде сетевого ресурса, для них потребуется создать ссылку:

$ mkdir -p ~/.wine/unc/servername
$ ln -s <локальный каталог> ~/.wine/unc/servername/sharename

В результате данный ресурс будет доступен win-приложениям через UNC-путь \servernamesharename.

Соответствие версий WINE@Etersoft и CIFS

Начиная с версии WINE@Etersoft 1.0.9, для организации сетевой работы следует использовать модуль etercifs из пакета etercifs. Для совместимости с предыдущими версиями WINE@Etersoft предназначен пакет linux-cifs, содержащий совместимый вариант модуля etercifs.

При возникновении путаницы с версиями etercifs следует учитывать следующее:

  1. Старый WINE не будет работать с пакетом etercifs, потому что модуль в нём не создаёт файл/proc/fs/cifs/Etersoft.
  2. Новый WINE отличает etercifs от linux-cifs как раз по наличию/proc/fs/cifs/Etersoft) и ведёт себя соответственно, поддерживая работу с обоими пакетами.
  3. Новый WINE по названию модуля (через файл/sys/module/etercifs/version) умеет определять, наш ли модуль cifs загружен.
  4. Начиная с определённой версии модуля cifs новый WINE (через файл/sys/module/cifs/version) будет поддерживать штатный модуль cifs из ядра.

Использование устаревшего модуля smbfs ядра Linux

Для ядер 2.4.x, для которых нет работающего CIFS, возможно использование модуля smbfs для организации совместной работы. Нами подготовлен патч, добавляющий поддержку блокировок в ядро 2.4.32.

Настройка Windows-сервера для совместной работы по протоколу CIFS

Настройка и организация ресурса стандартна и реализуется через “Общий доступ к файлам и папкам”. Важно не забыть указать права доступа к общему ресурсу и файлам. Если авторизация проходит через AD, необходимо установить параметр “Network Microsoft Server: Digitally sign communications (always) — Disable” в групповой политике.


Мар 202011
 

отсель http://howitmake.ru/blog/ubuntu/20.html

Размышлений на тему необходимости DHCP сервера в локальной сети множество, некоторые, несознательные личности или начинающие системные администраторы, предпочитают все настраивать вручную, якобы так надежнее, данное мнение имеет свое право на жизнь, но при одном условии, что сеть небольшая и число компьютеров подключенных к ней является постоянной величиной. В случае если в сети количество подключенных ПК постепенно увеличивается, или могут появиться клиенты, которым нужен доступ в вашу сеть лишь периодически, то вам, как системному администратору, придется делать не нужную работу-все эти проблемы помогает решить DHCP сервер. Данный сервер настраивается за пару минут и снимет с вас, очень много, рутинной работы.
Немного теории: DHCP расшифровывается как Dynamic Host Configuration Protocol, что по русски означает — протокол динамической конфигурации узла. Для тех кому интересно более подробно -вам сюда.

Настраивать мы будим на сервере Ubuntu 10.04. Способ настройки сервера не изменился со времен Ubuntu 7.XX.

Установим необходимый пакет

sudo apt-get install dhcp3-server

После выполнения установки, сервер автоматически НЕ запускается-выдавая ошибку, это нормально!
Для примера рассмотрим сеть с диапазоном IP адресов, начиная с 192.168.0.3 по 192.168.0.254 и маской подсети 255.255.255.0.
Наш шлюз, для выхода в Интернет занимает IP 192.168.0.1
В сети есть DNS сервер находящийся по адресу 192.168.0.2
Выдача IP адресов осуществляется на основе MAC адресов сетевых карт.

Начнем настройку:

sudo nano /etc/dhcp3/dhcpd.conf

Имя сети, можно оставить как есть, но лучше закомментировать.

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Если данный DHPC сервер будет единственным в сети, то директиву лучше раскоментировать.

authoritative;

Далее находим диапазон настроек адресов:
Снимем комментарии со строчек, которые нам необходимы:


# A slightly different configuration for an internal subnet.
subnet 192.168.0.0 netmask 255.255.255.0 {   # подсеть и маска
range 192.168.0.5 192.168.0.254; # указываем диапазон IP адресов, которые будут выдаваться клиентам
option domain-name-servers 192.168.0.2; # IP DNS-сервера
option domain-name "internal.example.org"; # можно задать название своей сети
option routers 192.168.0.1;  # адрес шлюза или маршрутизатора через который мы выходим в Интернет.
  option broadcast-address 192.168.0.255;  #широковещательный адрес который находится последним в диапазоне IP данной подсети
 default-lease-time 600; # время аренды IP адреса в сек.
  max-lease-time 7200;  # максимальное время аренды IP адреса
}

Все, теперь запускаем наш сервер:

sudo /etc/init.d/dhcp3-server start

Если запуск прошел без ошибок, то если подключить клиентский компьютер в эту сеть, он получит IP адрес.

Рассмотрим вариант, немного сложнее.
Предположим, что в качестве маршрутизатора у нас выступает ПК с двумя сетевыми картами eth0-смотрит в локальную сеть, eth1-смотрит в Интернет.
Чтобы наш DHCP сервер выдавал IP адреса только клиентам нашей локальной сети, необходимо указать системе, на каком сетевом интерфейсе принимать запросы от клиентов, в нашем случае eth0

sudo nano /etc/default/dhcp3-server

В строке INTERFACES указываем сетевой интерфейс, который смотрит в нашу локальную сеть (eth0)

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

Но и на этом не успокаиваемся.
Предположим, нам необходимо закрепить определенный IP адрес, за опеределенный сетевым устройством, например-сетевым принтером.
MAC адрес сетевого адаптера позволяет довольно легко идентифицировать нужное нам устройство внутри локальной сети.
И так определились-у нас есть принтер (хотя это может быть любое устройство, которое может подключаться к локальной сети) с MAC адресом: 00:00:72:6c:9m:2p, нам необходимо присвоить ему постоянный IP 192.168.0.100
Добавляем в самый конец dhcpd.conf

sudo nano /etc/dhcp3/dhcpd.conf
host network-printer {
  hardware ethernet 00:00:72:6c:9m:2p;
  fixed-address 192.168.0.100;
}

Где: hardware Ethernet-аппаратный адрес, он же MAC, fixed-address-IP который должен доставаться именно этому устройству.

После этого перезагружаем DHCP сервер чтобы изменения вступили в силу.

sudo /etc/init.d/dhcp3-server restart

В случае если необходимо просмотреть журнал DHCP сервера, идем в /var/log/messages
Настройка DHCP сервера, отнимет у вас не более пяти мин. жизни, но в последствии, сохранит вам-море времени.
Вот собственно и все.

Android SDK

 Android  Комментарии к записи Android SDK отключены
Мар 182011
 

Мона взять тута http://google-androids.ru/18-skachat-android-sdk-dlya-windows-linux-i-mac-os-besplatno.html

Делаем всплывающие картинки в листинге товара (VAMshop)

 VaM shop  Комментарии к записи Делаем всплывающие картинки в листинге товара (VAMshop) отключены
Мар 122011
 

Отсель http://www.molodezky.pp.ua/2011/02/21/delaem-vsplyvayushhie-kartinki-v-listinge-tovara/

В этой заметке я опишу, как сделать увеличение картинки в листинге товара при наведении курсора мыши, а точнее вывод в сплывающем окошке. Для этого будем использовать плагин jQuery Coda Popup Bubbles.

  1. Открываем includes/classes/product.php. Находим:
    'PRODUCTS_IMAGE' => $this->productImage($array['products_image'], $image),

    Вставляем после для вывода картинки размером изображения карточки товара:

    'PRODUCTS_IMAGE_INFO' => $this->productImage($array['products_image'], 'info'),

    либо размером попапа:

    'PRODUCTS_IMAGE_INFO' => $this->productImage($array['products_image'], 'popup'),
  2. Открываем шаблон листинга товара templates/ваш шаблон/module/product_listing/product_listing_colums.html. После первой строчки вставляем сам скрипт:
    {literal}
        <script src="jscript/jquery/jquery.js" type="text/javascript"></script>
        <script type="text/javascript">
        <!--
    $(function () {
      $('.bubbleInfo').each(function () {
        // options
        var distance = 10;
        var time = 125;
        var hideDelay = 250;
        var hideDelayTimer = null;
        // tracker
        var beingShown = false;
        var shown = false;
        var trigger = $('.trigger', this);
        var popup = $('.popup', this).css('opacity', 0);
        // set the mouseover and mouseout on both element
        $([trigger.get(0), popup.get(0)]).mouseover(function () {
          // stops the hide event if we move from the trigger to the popup element
          if (hideDelayTimer) clearTimeout(hideDelayTimer);
          // don't trigger the animation again if we're being shown, or already visible
          if (beingShown || shown) {
            return;
          } else {
            beingShown = true;
            // reset position of popup box
            popup.css({
              top: 10,
              left: 10,
              display: 'block' // brings the popup back in to view
            })
            // (we're using chaining on the popup) now animate it's opacity and position
            .animate({
              top: '-=' + distance + 'px',
              opacity: 1
            }, time, 'swing', function() {
              // once the animation is complete, set the tracker variables
              beingShown = false;
              shown = true;
            });
          }
        }).mouseout(function () {
          // reset the timer if we get fired again - avoids double animations
          if (hideDelayTimer) clearTimeout(hideDelayTimer);
          // store the timer so that it can be cleared in the mouseover if required
          hideDelayTimer = setTimeout(function () {
            hideDelayTimer = null;
            popup.animate({
              top: '-=' + distance + 'px',
              opacity: 0
            }, time, 'swing', function () {
              // once the animate is complete, set the tracker variables
              shown = false;
              // hide the popup entirely after the effect (opacity alone doesn't do the job)
              popup.css('display', 'none');
            });
          }, hideDelay);
        });
      });
    });
        //-->
        </script>
    {/literal}

    При этом, если у Вас магазин версии 1.62, то подключение jquery.js делать не нужно,т.е. вторую строчку в коде выше убираем.

  3. Дальше в этом же файле меняем:
    <dt>
    {if $module_data.PRODUCTS_IMAGE}<a href="{$module_data.PRODUCTS_LINK}">
    <img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.PRODUCTS_NAME}"
    title="{$module_data.PRODUCTS_NAME}" /></a><br />{/if}
    {$module_data.PRODUCTS_BUTTON_BUY_NOW}
    </dt>

    на:

    <dt>
    <div>
      {if $module_data.PRODUCTS_IMAGE}<a href="{$module_data.PRODUCTS_LINK}">
    <img id="download"  src="{$module_data.PRODUCTS_IMAGE}"
    alt="{$module_data.PRODUCTS_NAME}" title="{$module_data.PRODUCTS_NAME}" /></a>
    <br />{/if}
      {$module_data.PRODUCTS_BUTTON_BUY_NOW}
      <div>
        <img id="download"  src="{$module_data.PRODUCTS_IMAGE_INFO}"
     alt="{$module_data.PRODUCTS_NAME}" title="{$module_data.PRODUCTS_NAME}" />
      </div>
    </div>
    </dt>
  4. Открываем файл стилей шаблона templates/ваш шаблон/stylesheet.css. И добавляем где-нибудь поближе к стилям листинга:
    .bubbleInfo {position: relative;}
    .trigger {position: absolute;}
    .popup {position: absolute;display: none;z-index: 50;border-collapse: collapse;}

На этом все. Теперь в листинге при наведении на изображение товара будет появляться окошко с увеличенным изображением. Кстати, по такому же принципу можно переделать и карточку товара.
И еще один момент, возможно будут проблемы с отображением всплывающего блока в IE. В этом случае нужно будет задать жестко ширину и высоту блока popup и «поиграть» свойством margin совместно с css-хаком.

Выводим в шаблон контактные данные магазина (VAM shop)

 VaM shop  Комментарии к записи Выводим в шаблон контактные данные магазина (VAM shop) отключены
Мар 122011
 

Отсель  http://www.molodezky.pp.ua/2010/02/24/vyvodim-v-shablon-kontaktnye-dannye-magazina-vam-shop/

Часто нужно вывести название и контактные данные магазина на страницах шаблона. Название магазина выводится меткой {$store_name}. Для остальных же данных меток нет.

Но их можно легко вывести, вставляя в нужные места следующие константы:

  • {$smarty.const.STORE_TELEPHONE} — телефон;
  • {$smarty.const.STORE_OWNER} — владелец;
  • {$smarty.const.STORE_OWNER_EMAIL_ADDRESS} — E-Mail адрес;
  • {$smarty.const.STORE_ICQ} — ICQ;
  • {$smarty.const.STORE_SKYPE} — Skype;
  • {$smarty.const.EMAIL_FROM} — E-Mail от;
  • {$smarty.const.STORE_NAME_ADDRESS} — адрес и телефон магазина.