Jump to content

Recommended Posts

В общем, я оказываю поддержку Денису в написании мелких фиговин для скрипта :)

На данный момент, доработал вот что:
1. Комментарии ВКонтакте (можно выбирать или свои комменты встроенные в движок, или коментарии вконтакте).
2. Счёт-фактура (пока что простенькая, но легкодопиливаемая для разных стран), грубо говоря, при заказе выбираешь, какая форма оплаты - юридическое лицо или физическое.
3. Гугль-Аналитикс настроечки минимальные.
4. Для брэнда можно указать сайт.
5. Ещё пару мелких хаков, которых не помню уже (сделаю diff скоро, и вспомню).
6. Водяной знак с сохранением оригинала.
7. Вес для варианта товара.

В планах:
1. Авторизация через разные службы (ОпенИД, ВКонтакте).
2. Счёт-фактура с шаблонами.
3. Работа с фотографиями продукта: загрузка с помощью ajax, превьюшки, и больше чем 10 фоток на продукт.
4. Мелочи разные.
5. Приход товара через админку.
7. Входная цена для варианта(закупочная). Чтобы можно было делать официальный приход. Чтобы было примерно видно скока заработал.

Попозжа выкину инструкцию, как что допиливать :)

Link to post
Share on other sites
  • Replies 63
  • Created
  • Last Reply

Top Posters In This Topic

Офигеть! Все в ожидании... :-))

А скажите, такое не планируется, или возможно ли сделать:
Есть необходимость бренды разделять на категории (многим бы это пригодилось!).
К примеру:

КАТАЛОГ ТОВАРОВ
+ Телевизоры
- LCD
- Plazma
+ Холодильники
- двухкамерные
- встраиваемые
+ СВЧ
- без гриля
- с грилем
- с пароваркой
-------------------------
МЕНЮ БРЕНДЫ
+ Samsung
- телевизоры
- холодильники
- свч
- варочные панели
+ Panasonic
- телевизоры
- свч

Вообщем смысл понятен!

Это очень удобно для многих магазинов, человек который не знаком с предлагаемыми брендами будет искать товары в КАТАЛОГ ТОВАРОВ, а человек который знаком с брендами у него нет желания копаться в куче товаров , и он идет в каталог ТОВАРЫ ПО БРЕНДАМ и выбирает конкретную серию этого бренда.

В админке это выглядело бы просто:
Там где указываем БРЕНД к товару, в это же меню встроить подбренды.

А в ТОВАРЫ -> БРЕНДЫ сделать все по аналогии как ТОВАРЫ -> КАТЕГОРИИ, т.е. с возможностью задавать описания к разделам подбренд, добавить изображение к бренду и подбренду.

Что думаете по этому поводу?

И кто меня поддерживает, отзовитесь :-)

Link to post
Share on other sites

Предложение по брендам глупое какое то.
Если нажимаешь в каталоге "Телевизоры" то над товарами выводятся бренды в этих телевизорах. Нажимаешь "Samsung" и готово, все телики отфильтровались по бренду. Зачем тоже самое делать через жопу мне не понятно. Чел заходит на сайт за "теликом самсунг" и не за "самсунг теликом" . В общем бред какой то на мой взгляд. У меня реализовано отображение лого для брендов, выводятся над товарами в каталоге, нажал на картинку и показались все товары этого бренда в каталоге.

Link to post
Share on other sites

>> Антон
Есть такие люди, которые покупают только Самсунг, или там Порше (часы, машины, дизайнерскую мебель). Поэтому некий рациональный смысл в данной идее есть, другой вопрос нужно ли это наряду с обратным поиском по типу товара...

Link to post
Share on other sites

@Антон, пример я привел Бытовую техника, так лучше понять смысл. Но реализация мне нужна для другой группы товаров, для косметики.

У каждого производителя целая куча серий, каждый месяц появляются новые серии.
На данный момент у меня сейчас около 20-ти производителей.
У каждого производителя наименований товаров ОЧЕНЬ МНОГО.
И поэтому, заходя на сайт и выбрав Уход за волосами -> Шампуни = Куча товаров разных брендов из разных серий этих брендов.
Но тот кто знает, что хочет, ему не интересно постоянно копаться и искать то, к чему человек привык и любит, он просто зайдет в нужный бренд и выберет нужную серию.

Вот, так.
Я не кричу что всем это нужно, но МНОГИМ бы пригодилось.

Link to post
Share on other sites

Ну мне пришлось для заказчика таким образом сделать категория-бренд-размер. Размер вывел в отдельную таблицу, сортирую по ней, если надо не выбирая бренд выбрать размер. Все отлично получается. Также сделал дисконты с установкой админом величин от 5 до 75% с шагом в 5%. Выод отдельно всех дисконтов. То же самое с новинками и хитами. Аякс-калкулятор расчетный сделал при работе с заказом пользователем. Выирается доставка транспортной компанией, регион, способ UPS или EMS. вываливается расчет суммы и срок доставки. все это падает в сам заказ, менеджер все видит. Пользователь счастлив.

Link to post
Share on other sites

В общем, небольшая инструкция:

1. Добавить .htaccess который находится в корне сайта это:
===============================================================================
# Images
RewriteRule ^files/products/(.*\.(jpg))$ make_watermark.php?img=$1 [L]
===============================================================================

2. Создать файл Watermark.class.php и поместить в корень сайта с содержимым:
===============================================================================
<?php

/**
* Simpla CMS
*
* @copyright 2010 Artem Roshenia
* @link http://simp.la
* @author Artem Roshenia
*
* Этот класс позволяет накладывать свой текст в качестве водяного знака.
* Для фоток товара и всё такое к примеру.
*
*/

class Watermark{

# given two images, return a blended watermarked image
function Create_Watermark( $main_img_obj, $watermark_img_obj, $alpha_level = 100 ) {
$alpha_level /= 100; # convert 0-100 (%) alpha to decimal

# calculate our images dimensions
$main_img_obj_w = imagesx( $main_img_obj );
$main_img_obj_h = imagesy( $main_img_obj );
$watermark_img_obj_w = imagesx( $watermark_img_obj );
$watermark_img_obj_h = imagesy( $watermark_img_obj );

# determine center position coordinates
$main_img_obj_min_x = floor( ( $main_img_obj_w / 2 ) - ( $watermark_img_obj_w / 2 ) );
$main_img_obj_max_x = ceil( ( $main_img_obj_w / 2 ) + ( $watermark_img_obj_w / 2 ) );
$main_img_obj_min_y = floor( ( $main_img_obj_h / 2 ) - ( $watermark_img_obj_h / 2 ) );
$main_img_obj_max_y = ceil( ( $main_img_obj_h / 2 ) + ( $watermark_img_obj_h / 2 ) );

# create new image to hold merged changes
$return_img = imagecreatetruecolor( $main_img_obj_w, $main_img_obj_h );

# walk through main image
for( $y = 0; $y < $main_img_obj_h; $y++ ) {
for( $x = 0; $x < $main_img_obj_w; $x++ ) {
$return_color = NULL;

# determine the correct pixel location within our watermark
$watermark_x = $x - $main_img_obj_min_x;
$watermark_y = $y - $main_img_obj_min_y;

# fetch color information for both of our images
$main_rgb = imagecolorsforindex( $main_img_obj, imagecolorat( $main_img_obj, $x, $y ) );

# if our watermark has a non-transparent value at this pixel intersection
# and we're still within the bounds of the watermark image
if ( $watermark_x >= 0 && $watermark_x < $watermark_img_obj_w &&
$watermark_y >= 0 && $watermark_y < $watermark_img_obj_h ) {
$watermark_rbg = imagecolorsforindex( $watermark_img_obj, imagecolorat( $watermark_img_obj, $watermark_x, $watermark_y ) );

# using image alpha, and user specified alpha, calculate average
$watermark_alpha = round( ( ( 127 - $watermark_rbg['alpha'] ) / 127 ), 2 );
$watermark_alpha = $watermark_alpha * $alpha_level;

# calculate the color 'average' between the two - taking into account the specified alpha level
$avg_red = $this->_get_ave_color( $main_rgb['red'], $watermark_rbg['red'], $watermark_alpha );
$avg_green = $this->_get_ave_color( $main_rgb['green'], $watermark_rbg['green'], $watermark_alpha );
$avg_blue = $this->_get_ave_color( $main_rgb['blue'], $watermark_rbg['blue'], $watermark_alpha );

# calculate a color index value using the average RGB values we've determined
$return_color = $this->_get_image_color( $return_img, $avg_red, $avg_green, $avg_blue );

# if we're not dealing with an average color here, then let's just copy over the main color
} else {
$return_color = imagecolorat( $main_img_obj, $x, $y );

} # END if watermark

# draw the appropriate color onto the return image
imagesetpixel( $return_img, $x, $y, $return_color );

} # END for each X pixel
} # END for each Y pixel

# return the resulting, watermarked image for display
return $return_img;

} # END create_watermark()

# average two colors given an alpha
function _get_ave_color( $color_a, $color_b, $alpha_level ) {
return round( ( ( $color_a * ( 1 - $alpha_level ) ) + ( $color_b * $alpha_level ) ) );
} # END _get_ave_color()

# return closest pallette-color match for RGB values
function _get_image_color($im, $r, $g, $B) {
$c=imagecolorexact($im, $r, $g, $B);
if ($c!=-1) return $c;
$c=imagecolorallocate($im, $r, $g, $B);
if ($c!=-1) return $c;
return imagecolorclosest($im, $r, $g, $B);
} # EBD _get_image_color()

} # END watermark API


?>
===============================================================================

Link to post
Share on other sites

3. Создать файл make_watermark.php и поместить в корень сайта с содержимым:
===============================================================================
<?PHP

/**
* Simpla CMS
*
* @copyright 2010 Artem Roshenia
* @link http://simp.la
* @author Artem Roshenia
*
*/

if(!strip_tags($_GET['img']) || !isset($_GET['img']) || $_GET['img'] == "" || $_SERVER['HTTP_HOST'] == "your-shop.com"){
// If they tried to access this file directly, send them elsewhere
header("Location: http://www.your-shop.com/");
}

$reqpath = strip_tags($_GET['img']);
$foundsite = strpos($reqpath,'.jpg'); // Get the position of the first slash

if($foundsite === FALSE){
header("Location: http://www.your-shop.com/");
}
else{

require_once('Watermark.class.php');

// Определяем тип документа
header("Content-type: image/jpeg");

$watermark = new Watermark();
$img = imagecreatefromjpeg("./files/products/".$reqpath);
$water = imagecreatefrompng("./files/system/logo.png");
$im = $watermark->Create_Watermark($img, $water, 10);

imagejpeg($im);
imagedestroy($im);
}

?>
===============================================================================

4. Заменить your-shop.com на тот сайт что у Вас.
5. Создать директорию system в files
6. Поместить Ваш логотип в формате PNG в эту созданную директорию system. Сделайте только логотип с прозрачностью. А так же, его обзовите как logo.png, или на любое своё любимое, и замените в файле make_watermark.php в соответствующей строке(почти внизу).

Наслаждайтесь :)

Далее в программе допил счёт-фактуры.

Link to post
Share on other sites

# acab,
Друг, напиши для нас решение наших проблем. Оч надо, тебе много людей скажут спасибо.

Я ПРО:
А у тебя в планах не будет возможности дописать установку размера и цвета для каждого товара отдельно?

Link to post
Share on other sites

блин. я же говорю. что я готов это реализовать
работы тут на чутка

я вообще делаю к примеру так:
1. есть товар
2. есть пару моделей товара(варианты собсно)
3. для каждого варианта указываются габариты и вес.

но блин. я выкинул фотку того как у меня получилось. я не знаю как это скомпоновать
я не верстальщик

Link to post
Share on other sites

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

Link to post
Share on other sites

открываешь phpmyadmin
ищешь таблицу products_variants
добавляешь новые поля. и вуаля

затем редактируешь класс с продуктами (Product.Admin.php). больше ничего сложного нету нету...

foreach($variants as $variant_id=>$variant)
{
if($variant->variant_id)
$query = sql_placeholder('INSERT INTO products_variants (product_id, variant_id, sku, name, price, stock, position, weight) VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
$this->item->product_id, $variant_id, $variant['sku'], $variant['name'], $variant['price'], $variant['stock'], $position++, $variant['weight']);
else
$query = sql_placeholder('INSERT INTO products_variants (product_id, variant_id, sku, name, price, stock, position, weight) VALUES (?, NULL, ?, ?, ?, ?, ?, ?)',
$this->item->product_id, $variant['sku'], $variant['name'], $variant['price'], $variant['stock'], $position++, $variant['weight']);
$this->db->query($query);
}



в этом примере, я добавил поле weight

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...