Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Как реализовать бокс по просмотру всех товаров?

Всем привет! Делал ли кто-нибудь бокс, где могут "крутиться" все товары во всех категориях? (ну или хотябы 10 рандомных товаров). Скроллер у меня есть. Также я посмотрел код для бокса Новинки, но там выбирается всего один товар. Мне же нужно чтобы товаров было хотябы несколько,(штук 10).

МОжет кто-нить уже делал такое? Евгений, можно ли переделать бокс Новинки или Просмотренные под эти нужды?


Кто-то тут дела вроде, но выложить забыли).
Вообще таких разных боксов не хватает в шопосе!


я пока настроил новинки по истечению срока в 1000 дней  8)
а такой бокс действительно нужен ;)


foton, дело в том, что это не то, чего я хочу. php бокса новинки собирает информацию о одном товаре и передает в одноименный html для вывода. После перезагрузки страницы, выбирается ещё один рандомный товар и опять выводится.
Мне же нужно чтобы из базы бралась инфа о 10-тке товаром, записывалась в массив и передавалась в html. Тогда я смогу использовать javascript'овый скроллер для прокрутки этих 10-ти товаров (они будут крутиться сами с интервалом или же пользователь может сам их полистать). Так что 1000 дней это вообще не вариант.

Подобного бокса реально не хватает. Правда есть вариант что он будет серьезно грузть магазин, в котором огромного кол-во товаров, но для меня это не представляет угрозы - товаров будет мало.

Евгений, можете нам помочь с этим?Может подскажите что переделать в боксе Новинки для этих нужд?:


АП!))


И мну тоже хотелось бы знать. Очень полезный бокс получился бы. есть тут знающие люди?


Было весьма неплохо такое иметь)


Вот накидал php для такого бокса. Нового бокса пока не создавал. Сделал на основе бокса LASTVIEWED.
Файл last_viewed.php стал выглядеть так:

<?php

$box = new osTemplate;
$box->assign('tpl_path', _HTTP_THEMES_C);

$content_array = array();

$sql = "select p.products_id,
  p.products_image,
              pd.products_name,
  p2c.categories_id,
              cd.categories_name
              from
  " . TABLE_PRODUCTS . " p,
              " . TABLE_PRODUCTS_DESCRIPTION . " pd,
              " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c,
              " . TABLE_CATEGORIES_DESCRIPTION . " cd
        where p.products_status = '1'
  and p.products_id = p2c.products_id
              and pd.products_id = p.products_id
              and p.products_id !='".(int) $_GET['products_id']."'
  and cd.categories_id = p2c.categories_id
  and cd.language_id = '" . $_SESSION['languages_id'] . "'";

$content_query = osDBquery($sql);

while ($content = os_db_fetch_array($content_query,true)) {

$content_array[]=array(
        'PRODUCT_NAME' => $content['products_name'],
        'PRODUCT_IMAGE' => $content['products_image'],
        'PRODUCT_PAGE' => os_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $content['products_id']),
        'CATEGORY_LINK' => os_href_link(FILENAME_DEFAULT, os_category_link($content['categories_id'],$random_product['categories_name']))
        );
}

if (sizeof($content_array) > 0) {
    $box->assign('language', $_SESSION['language']);
    $box->assign('content_array',$content_array);

    // set cache ID
  if (!CacheCheck()){
        $box->caching = 0;
        $box_last_viewed= $box->fetch(CURRENT_TEMPLATE.'/boxes/box_last_viewed.html');
    } else {
        $box->caching = 1;
        $box->cache_lifetime=CACHE_LIFETIME;
        $box->cache_modified_check=CACHE_CHECK;

  $box_last_viewed= $box->fetch(CURRENT_TEMPLATE.'/boxes/box_last_viewed.html',$cache_id);
    }
    $osTemplate->assign('box_LAST_VIEWED',$box_last_viewed);
}
?>

К last_viewed.html уже был подключен javascript bxSlider, который кажется уже обсуждался где-то на форуме.
Вывод товаров стал выглядеть так:

<div id="slider-content">
{foreach name=content item=content_array from=$content_array}

<div class="item">
{if $content_array.PRODUCT_IMAGE != ' '}<a href="{$content_array.PRODUCT_PAGE}"><img src="{$content_array.PRODUCT_IMAGE}" alt="{$content_array.PRODUCT_NAME}" border="0" /></a>{/if}

<h4 class="bold"><a href="{$content_array.PRODUCT_PAGE}">{$content_array.PRODUCT_NAME}</a></h4>
            <h6><a href="{$content_array.CATEGORY_LINK}">{#text_goto_cat#}</a></h6>

</div>

{/foreach}
</div>

Выводить стал то, что нужно. Однако есть две проблемы. Первая, то что перестал работать слайдер. Хотя до изменения в этом файле он работал для Просмотренных товаров. Товары выводятся столбиком.

Вторая, не показывается картинка товара. Как если бы её не было, т.е. вместо картинки показывает значение атрибута alt.

Евгений, могли бы вы подсказать в чем ошибка?


Так с картинками я разобрался... нужно строку 

'PRODUCT_IMAGE' => $content['products_image'],

заменить на

'PRODUCT_IMAGE' => DIR_WS_THUMBNAIL_IMAGES . $content['products_image'],

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

А в общем вроде работает, так что пользуйтесь кому нада.


ЗЫ Кстати насчет javascript скроллера. Понял как его починить, но не понял почему так происходит.
Короче надавно подключил lightbox для поп-ап товаров. Однако "по нормальному" он подключаться отказался. т.е. когда я прописываю подключение js файлов lightbox вместо файлов trickbox в header.php нифига не работает.

Картинки открываются не в поп-ап,  просто на весь экран. Однако когда я пишу тоже самое в конце general.js.php шаблона, lightbox начинает работать. Однако перестает работать slider. Если я подключаю файлы в начале lightbox lдо слайдера в general.js.php то lightbox опять не работает, но начинает работать слайдер. Вот строки из general.js.php :

<script type="text/javascript" src="jscript/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="jscript/lightbox/js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="jscript/lightbox/js/lightbox.js"></script>

<script type="text/javascript" src="jscript/jquery/jquery.js"></script>
<script type="text/javascript" src="<?php echo _HTTP_THEMES_C; ?>javascript/jquery.bxSlider.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$('#slider-content').bxSlider({
mode: 'slide',
speed: 500,
pause: 5000,
auto: true,
wrapper_class: 'slide-content'
});
});
</script>


Так работает только слайдер.

<script type="text/javascript" src="jscript/jquery/jquery.js"></script>
<script type="text/javascript" src="<?php echo _HTTP_THEMES_C; ?>javascript/jquery.bxSlider.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$('#slider-content').bxSlider({
mode: 'slide',
speed: 500,
pause: 5000,
auto: true,
wrapper_class: 'slide-content'
});
});
</script>

<script type="text/javascript" src="jscript/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="jscript/lightbox/js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="jscript/lightbox/js/lightbox.js"></script>

Так работает только lightbox.

Евгений, что я упустил?


А ты папробуй в шаблон ввести!
\themes\шаблон\javascript



в конце general.js.php шаблона


Я туда и прописываю. А где лежат сами js думаю без разницы. Там фишка такая, что скроллер этот не работает если подключение его js идет не последним после подключения jquery.

Пока нашел выход такой. В header.php вынес строку которая подключает  general.js.php выше чем условие для PRODUCT_INFO и запретил боксу LASTVIEWED отображаться на странице карточки товара. (с помощью boxes.php). Суть в том, что на всех страницах кроме карточки товара скроллер оказывается последним посде подключения jquery и "он доволен".  И только на карточке товара, подключается lightbox, поэтому скроллер сразу "становится не хорошо" и не стоит его показывать людям. :))))

Решение кривое. Поэтому кричу ПОЛУНДРА! ПОМОГИТЕ! Кто знает как правильно все подключить??? А то решение "только на пока", т.к. если мне нужно будет ещё скрипт для jquery использовать, то геморы опять начнуться, я полагаю.

NEED HELP!


UP! STILL VALID!


Неужеле никто не знает как правильно подключить jquery ?:(


Источник



Copyright ShopOS