Категории
[FAQ] Часто задаваемые вопросы и ответы
Проблемы и решения
Ошибки и исправления
Общие вопросы
Расширения
Установка и обновление
Модули
Шаблоны
Локализация интерфейса
Коммерческие предложения
Учимся бизнесу
Бизнес книги
Поисковая оптимизация (SEO)
Магазины на ShopOS
Хостинг для ShopOS
Предложения и пожелания
Курилка
|
Нужен помощь в php
$special_query = os_db_query("SELECT p.products_id, pd.products_name, p.products_image, p.products_tax_class_id, p.products_price FROM products_to_categories ptc, categories_description cd, products p, products_description pd WHERE cd.categories_name='?? что здесь' AND cd.language_id=2 AND ptc.categories_id=cd.categories_id AND p.products_id=ptc.products_id AND pd.products_id=p.products_id AND pd.language_id='".$_SESSION['languages_id']."'");
if (os_db_num_rows($special_query)) { $module_content = array (); while ($special = os_db_fetch_array($special_query)) { $special_image = '<a href="'.os_href_link(basename($PHP_SELF), os_get_all_get_params(array ('action')).'action=buy_now&BUYproducts_id='.$special['products_id'], 'NONSSL').'">'.os_image(DIR_WS_THUMBNAIL_IMAGES.$special['products_image'], $special['products_name']).'</a>'; $special_buy_now = '<a href="'.os_href_link(basename($PHP_SELF), os_get_all_get_params(array ('action')).'action=buy_now&BUYproducts_id='.$special['products_id'], 'NONSSL').'">'.os_image_button('button_buy_now.gif', TEXT_BUY.$special['products_name'].TEXT_NOW).'</a>'; $module_content[] = array ('SPECIAL_NAME' => $special['products_name'], 'SPECIAL_ID' => $special['products_id'], 'SPECIAL_IMAGE' => $special_image, 'SPECIAL_PRICE' => $osPrice->osGetPrice($special['products_id'], $format = true, 1, $special['products_tax_class_id'], $special['products_price']), 'SPECIAL_BUY_NOW' => $special_buy_now); } } else { $module_content = false; }
$osTemplate->assign('module_content', $module_content); Пишу Cart не получается, Корзина тоже :) , что не так? Спасибо.
Объясню что я делаю! Сделаю вот такую штуку, назовем его "Удобная корзина" :)
Что я сделал!
includes/cart_actions.php
case 'update_product' :
for ($i = 0, $n = sizeof($_POST['products_id']); $i < $n; $i++) { if (in_array($_POST['products_id'], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array ()))) { $_SESSION['cart']->remove($_POST['products_id']); } else { if ((int)$_POST['cart_quantity'] > MAX_PRODUCTS_QTY) $_POST['cart_quantity'] = MAX_PRODUCTS_QTY; $attributes = ($_POST['id']]) ? $_POST['id']] : ''; $_SESSION['cart']->add_cart($_POST['products_id'], os_remove_non_numeric((int)$_POST['cart_quantity']), $attributes, false); } } os_redirect(os_href_link($goto, os_get_all_get_params($parameters))); break; поменял case 'update_product' : $_SESSION['alter'] = false; if (isset ($_POST['plus']) && array_sum($_POST['plus']) > 0) { foreach($_POST['plus'] as $key => $value) { $attributes = ($_POST['id']]) ? $_POST['id']] : ''; $_SESSION['cart']->add_cart($_POST['products_id'], os_remove_non_numeric($_POST['cart_quantity'] + 1), $attributes, false); } } elseif (isset ($_POST['minus']) && array_sum($_POST['minus']) > 0) { foreach($_POST['minus'] as $key => $value) { if ($_POST['cart_quantity'] == '1') { $_SESSION['cart']->remove($_POST['products_id']); } else { $attributes = ($_POST['id']]) ? $_POST['id']] : ''; $_SESSION['cart']->add_cart($_POST['products_id'], os_remove_non_numeric($_POST['cart_quantity'] - 1), $attributes, false); } } } elseif (isset ($_POST['delete']) && array_sum($_POST['delete']) > 0) { foreach($_POST['delete'] as $key => $value) { $_SESSION['cart']->remove($_POST['products_id']); } } elseif (isset ($_POST['alter'])) { $_SESSION['alter'] = true; $_SESSION['alter_prod'] = $_POST['alter']; } elseif (isset ($_POST['attributes'])) { $temp=explode("-",$_POST['attributes']); $prod_id = $temp; $alt = $temp; $neu = $temp; $attr_id = $temp; $attributes = array($attr_id => $neu); //$_POST['id']] : ''; $_SESSION['cart']->modify_attributes($_POST['products_id'], os_remove_non_numeric($_POST['cart_quantity']), $attributes, false); } else { for ($i = 0, $n = sizeof($_POST['products_id']); $i < $n; $i++) { if (in_array($_POST['products_id'], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array ()))) { $_SESSION['cart']->remove($_POST['products_id']);
if (is_object($econda)) $econda->_delArticle($_POST['products_id'], $_POST['cart_quantity'], $_POST['old_qty']);
} else { if ($_POST['cart_quantity'] > MAX_PRODUCTS_QTY) $_POST['cart_quantity'] = MAX_PRODUCTS_QTY; $attributes = ($_POST['id']]) ? $_POST['id']] : '';
if (is_object($econda)) { $old_quantity = $_SESSION['cart']->get_quantity(os_get_uprid($_POST['products_id'], $_POST['id'])); $econda->_updateProduct($_POST['products_id'], $_POST['cart_quantity'], $old_quantity); }
$_SESSION['cart']->add_cart($_POST['products_id'], os_remove_non_numeric($_POST['cart_quantity']), $attributes, false); } } } os_redirect(os_href_link($goto, os_get_all_get_params($parameters))); break;
themes/default/module/order_details.html
<td class="main" style="border-bottom: 1px solid; border-color: #cccccc;" align="center"><strong>{#text_qty#}</strong></td> заменой
<td class="main" style="border-bottom: 1px solid; border-color: #cccccc;" align="center" colspan="3"><strong>{#text_qty#}</strong></td>
<tr> <td colspan="6"></td> </tr> заменой
<tr> <td colspan="8"></td> </tr>
<td valign="top" class="main" align="center">{$module_data.PRODUCTS_QTY}</td> заменой
<td valign="top" class="main" align="center" width="21">{$module_data.MINUS}</td> <td valign="top" class="main" align="center">{$module_data.PRODUCTS_QTY}</td> <td valign="top" class="main" align="center" width="21">{$module_data.PLUS}</td>
<td class="main">{$item_data.NAME}:</td> <td class="main" align="left">{$item_data.VALUE_NAME}</td> заменой
<td class="main" align="left" width="1%">{$item_data.ALTER}</td>
themes/default/module/shopping_cart.php
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="main"> </td> </tr> <tr> <td>{$MODULE_order_details}</td> </tr> <tr> <td class="main"></td> </tr> </table>
заменой
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="main"> </td> </tr> <tr> <td>{$MODULE_order_details}</td> </tr> <tr> <td class="main"> {if $module_content} <table width="100%" border="0" background="{$tpl_path}img/bg_light_grey.gif" bgcolor="#EDEDED" class="main"> <tr> {foreach name=aussen item=module_data from=$module_content} <td align="center"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="100%" align="center" background="{$tpl_path}img/bg_light_grey.gif" bgcolor="#EDEDED" class="main"><strong>{$module_data.SPECIAL_NAME}</strong></td> </tr> <tr> <td width="100%" align="center" background="{$tpl_path}img/bg_light_grey.gif" bgcolor="#EDEDED" class="main">{$module_data.SPECIAL_IMAGE}</td> </tr> <tr> <td align="center" background="{$tpl_path}img/bg_light_grey.gif" bgcolor="#EDEDED" class="main" style="padding-top:3px;"><strong>{$module_data.SPECIAL_PRICE}</strong></td> </tr> <tr> <td align="center" background="{$tpl_path}img/bg_light_grey.gif" bgcolor="#EDEDED" class="main">{$module_data.SPECIAL_BUY_NOW}</td> </tr> </table> </td> {/foreach} </tr> </table> {/if} </td> </tr> </table>
и style.css самом конце добавил
.alter { display: block; background-image: url(img/alter.gif); background-repeat: no-repeat; width: 13px; height: 13px; border: 0px; font-size: 0px; cursor: pointer; }
Судя по названию темы, автор хотел задать вопрос. А в тексте вопроса что-то не видно.
можно убрать cd.categories_name='?? что здесь' там уже есть ptc.categories_id=cd.categories_id
и
AND cd.language_id=2 заменить на
AND cd.language_id='".$_SESSION['languages_id']."'
и после FROM у указанных таблиц чет префикса нету. ты убрал префикс при установке?
там кстати можно использовать TABLE_PRODUCTS_TO_CATEGORIES т.е. FROM ".TABLE_PRODUCTS_TO_CATEGORIES." список весь тут includes\database.php
Судя по названию темы, автор хотел задать вопрос. А в тексте вопроса что-то не видно.
Да в первом посту я задал вопрос ))) Этот код должно было на странице корзины выводить атрибуты, Я вчера долго и упорно хотел делать, но не получилось :P Но получилось чуток другое, без атрибутов!
NeBox 2 посту реализованный и рабочий вариант, без атрибутов. По пробую сегодня реализовать до конца :)
Источник
|