Перейти к содержимому


Фотография
* * * * * 1 Голосов

Способы создания мобильной версии


Сообщений в теме: 19

#11 CB9TOIIIA

CB9TOIIIA

Отправлено 31 January 2015 - 09:34

!$detect->isTablet()

разве не трактуется как не планшет?


  • 1

#12 i001

i001

Отправлено 31 January 2015 - 10:05

!$detect->isTablet()

разве не трактуется как не планшет?

 

 

именно, в примере который я дал правильный коммент будет только на мобильных


Кстати, я этот класс Mobile_Detect вживил даже в JBlank. Мне нра, хотя подход к определению конечно не 100%

...но таких и не бывает (=

Денис а что не определяет? Я просто месяц назад когда ставил его на один из своих "самописов" долго проверял его хромовским отладчиком и всеми устройствами которые попадались под руку, разночтений в определении так и не нашел.


  • 0

#13 SmetDenis

SmetDenis

Отправлено 31 January 2015 - 10:12

Денис а что не определяет?

 

Класс ориентируется на http_user_agent  а ему, как известно, нельзя доверять как и любым заголовкам/переменным http_*

Если человек сидит через проксю, например, которая потрошит заголовки, то чуда не произойдет.

Ну и +пачка расширений браузера, которые могут подделывать это все.

 

В общем, не точная наука =) Но более кошерного способа не найти.

 

У этого форума тоже регулярками определяется тип браузера и устройства, в целом проблем у меня тоже не наблюдалось с телефона и планшета. За исключением 2-3 случаев.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#14 mdcsfk

mdcsfk

Отправлено 31 January 2015 - 16:36

Мне кажется, это не пойдет мне.

Я использовал вот этот плагин:

http://www.blackredd...detector-plugin

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

 

Итого: как можно привязать отображение той или иной структуры корзины в зависимости от шаблона или класса?


  • 0

#15 mdcsfk

mdcsfk

Отправлено 02 February 2015 - 09:51

Ребят, я понимаю, что у всех и своих дел навалом, но, все же, может кто-то сможет помочь с решением этой проблемы? это, в общем-то, последнее препятствие перед созданием полноценной мобильной версии)


  • 0

#16 CB9TOIIIA

CB9TOIIIA

Отправлено 02 February 2015 - 10:00

Ребят, я понимаю, что у всех и своих дел навалом, но, все же, может кто-то сможет помочь с решением этой проблемы? это, в общем-то, последнее препятствие перед созданием полноценной мобильной версии)

 

Возможно просто не понимают сути вопроса... цели...

 

Вы говорите:

 

 

как можно привязать отображение той или иной структуры корзины в зависимости от шаблона или класса?

 

Вариант 1: Отображать по разному можно по классам - классы можно вешать JS'ом - JS может брать классы пускай от того же mobile detect.

Вариант 2: Отображаение того или иного от класса - это медиа выражения CSS3 - в принципе по ширине окна верстать для каждого и ничего сложного.

Вариант 3: Отображать в зависимости от шаблона - а шаблон подставлять в зависимости от устройства (телефон, планшет, иное) - самым рабочим способ для меня это https://www.nonumber...templatemanager - в нем есть возможность детектить почти все. (у меня например даже стояла настройка с двух часов ночи до 7 утра менять шаблон на легковесный на новостнике - ночью боты ПС очень активны). И использовать advancedtemplatemanager например с шаблоном JBlank - в нем можно быстро и ЧИСТО написать структуру шаблона (использовать mobile detect в этом варианте не нужно).


  • 1

#17 mdcsfk

mdcsfk

Отправлено 02 February 2015 - 10:29

ок, я действительно не понятно выразился)

 

итак, с начала.

 

Вот так выглядит обычный шаблон корзины:

<div class="basket-item-list box1">
    <div class="module-title">
        <h2 class="title"><?php echo JText::_('JBZOO_CART_ITEMS'); ?></h1>
    </div>
<table class="jbbasket-table jsJBZooBasket">
    <thead>
    <tr>
        <th>#</th>
        <th><?php echo JText::_('JBZOO_CART_ITEM_SKU'); ?></th>
        <th></th>
        <th><?php echo JText::_('JBZOO_CART_ITEM_NAME'); ?></th>
        <th style="min-width: 120px;"><?php echo JText::_('JBZOO_CART_ITEM_PRICE'); ?></th>
        <th><?php echo JText::_('JBZOO_CART_ITEM_QUANTITY'); ?></th>
        <th style="min-width: 120px;"><?php echo JText::_('JBZOO_CART_ITEM_SUBTOTAL'); ?></th>
        <th></th>
    </tr>
    </thead>

    <tbody>
    <?php
    $i = 0;
    $summa = 0;
    $count = 0;

    $currencyConvert = $view->appParams->get('global.jbzoo_cart_config.currency');
    $imageElementId = $view->appParams->get('global.jbzoo_cart_config.element-image');

    foreach ($view->basketItems as $hash => $basketItem) {

        $item = $basketItem['item'];

        $basketItem['price'] = $this->app->jbmoney->convert($basketItem['currency'], $currencyConvert, $basketItem['price']);

        $count += $basketItem['quantity'];

        $subtotal = $basketItem['quantity'] * $basketItem['price'];
        $summa += $subtotal;

        $image = $this->app->jbitem->renderImageFromItem($item, $imageElementId, true);

        echo '<tr class="row-' . $hash . '" data-itemId="' . $item->id . '" data-hash="' . $hash . '">';
        echo '<td class="cart-item-number">' . ++$i . '</td>';
        echo '<td class="cart-item-sku">' . $basketItem['sku'] . '</td>';
        echo '<td class="cart-item-image">' . $image . '</td>';

        echo '<td class="cart-item-name">';
        echo '<a href="' . $this->app->route->item($item) . '" title="' . $item->name . '">' . $item->name . '</a>';

        if (isset($basketItem['priceParams']) && !empty($basketItem['priceParams'])) {
            foreach ($basketItem['priceParams'] as $key => $value) {
                if (!empty($value)) {
                    echo '<div><strong>' . $key . ':</strong> ' . $value . '</div>';
                }
            }
        }

        if (!empty($basketItem['priceDesc'])) {
            echo '<br/><span class="price-description">' . $basketItem['priceDesc'] . '</span>';
        }

        echo '</td>';

        if ($basketItem['price']) {
            echo '<td class="jsPricevalue cart-item-price" price="' . $basketItem['price'] . '">'
                . $this->app->jbmoney->toFormat($basketItem['price'], $currencyConvert)
                . ' </td>';
        } else {
            echo '<td class="cart-item-price"> - </td>';
        }

        echo '<td class="cart-item-quantity"><input type="text" class="jsQuantity input-quantity" value="' . $basketItem['quantity'] . '" /></td>';

        if ($basketItem['price']) {
            echo '<td class="jsSubtotal">' . $this->app->jbmoney->toFormat($subtotal, $currencyConvert) . '</td>';
        } else {
            echo '<td> - </td>';
        }

        echo '<td class="cart-item-rembtn"><input type="button" class="jbbutton jsDelete" itemid="' . $item->id . '" value="' . JText::_('JBZOO_CART_DELETE') . '" /></td>';
        echo "</tr>\n";
    }
    ?>
    </tbody>

 <tfoot>
    <tr>
        <td colspan="5" class="right"><strong><span id="summ_delivery_label">Доставка:</span></strong></td>
        <td>&nbsp;</td>
        <td><span id="summ_delivery">0 р.</span></td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td colspan="5" class="right"><strong><span id="summ_delivery_label"><?php echo JText::_('JBZOO_CART_TOTAL'); ?>:</span></strong></td>
        <td class="jsTotalCount"><?php echo $count; ?></td>
        <td class="jsTotalPrice"><span id="summ_full"><?php echo $this->app->jbmoney->toFormat($summa, $currencyConvert); ?></span></td>
        <td>
            <input type="button" class="button-default jsDeleteAll" value="<?php echo JText::_('JBZOO_CART_REMOVE_ALL'); ?>"/>
        </td>
    </tr>
    </tfoot>

</table>
</div>

Т.е. это таблица (table, tbody, theader, etc.)

 

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

 

Но! пока корзина именно в виде таблицы, возможности здорово ограничены: я не могу растянуть ячейку на 100% ширины экрана, например, т.к. рядом другие ячейки имеются.

 

Цель:

В мобильной версии корзина должна отображаться не таблицей, а просто в блоках div, т.е. div для названия товара, div для цены и т.д.


  • 0

#18 CB9TOIIIA

CB9TOIIIA

Отправлено 02 February 2015 - 10:51

Вы же видите:

<table class="jbbasket-table jsJBZooBasket">

и прочие td ... переверстайте на div'ах, если конечно получится с mobile detect.

 

А вообще да, таблица менее гибкая, но все же почти все, что угодно можно через CSS же ей придать и скрыть.


    <?php if ($tpl->isMobile()) : ?>
        <!-- only for mobiles  -->
    <? endif; ?>

    <?php if ($tpl->isTablet()) : ?>
        <!-- only for tablets  -->
    <? endif; ?>

Сообщение отредактировал CB9TOIIIA: 02 February 2015 - 11:18

  • 0

#19 laRus

laRus

Отправлено 02 February 2015 - 10:52

корзина должна отображаться не таблицей, а просто в блоках div

 

Извините,если не верно что-то понимаю, но что мешает переопределить шаблон вывода корзины?


Сообщение отредактировал Ursa: 02 February 2015 - 10:53

  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#20 Евгения

Евгения

Отправлено 03 February 2015 - 18:48

Извините,если не верно что-то понимаю, но что мешает переопределить шаблон вывода корзины?

Скрипты, например. Они к нему жестко привязаны. И классам вроде jsJBZooBasket.


  • 0

"Это бессмысленно" - сказал разум. "Это нелепо" - заметил опыт. "Это бесполезно" - отрезал здравый смысл. "О! Вот так нормально!" - обрадовался клиент.

Что, где лежит (тема-сборник про пути к файлам)





Click to return to top of page in style!