Ещё вопрос можно ли как то прописать title для изображений?
Да на вкладке фото у товара есть поле ввода под каждой фотографией.
Форум ReadyScript Сообщения от Закусило Александр
Ещё вопрос можно ли как то прописать title для изображений?
Да на вкладке фото у товара есть поле ввода под каждой фотографией.
Добрый день.
Заметил , что гугль не хочет индексировать картинки на сайте, точнее хочет , но не все. Такой проблемы с яндексом например нет. В чем может быть проблема? и можно ли доработать карту сайта для добавления и изображений для товара?
Вам на этот вопрос ответит только Google.
и можно ли доработать карту сайта для добавления и изображений для товара?
Можно. Надо разрабатывать. Только зачем??????? Гугл и и так должен кушать.
Нет. Это называется мультивендорная платформа. Это вообще отдельный продукт.
Всем привет. Нашему начальнику приспичило сделать сайт нашей компании ну, и нагрузили этим меня. Я более менее сделал сайт, не скажу, что он был идеален, но какой никакой сайт был. Через некоторое время до меня докопался начальник что, мол, сайт не адаптирован к мобильным устройствам. Я задумался об этом и понял, что сам я это не сделаю. Пошел к начальнику сказал, что сам я это не сделаю и нужно привлечь еще кого-то. Он меня более менее понял и выделил небольшой бюджет. Я начал штудировать интернет в поисках кто бы мог адаптировать сайт. После часа поисков я вышел на этот сайт http://www.mobile-version.ru/. Я начал искать отзывы о них (в основном они были положительные). Ну, я на свой страх и риск заказал у них адаптацию. Оплатил, и через 3 дня все было готово. Я проверил, мне все понравилось, а самое главное для меня понравилось моему начальнику.
Ну наконец-то первая реклама. Я уж думал не дождусь. ![]()
Ну на пальцах так не расскажешь. Т.к. там у Вас по сравнению с классической совсем другая ситуация, но в двух словах, Вам надо взять верстку шаблона list_products.tpl из классической и поменять на него свой list_products.tpl. Далее выдрать из классической все стили которые касаются списка товаров и вставить себе. После этого нужно инициализировать крутилочку в JS для этих товаров.
Если Вы не верстальщик, то советую просто заплатить. Так будет куда быстрее и не дорого.
Да Вам надо либо сократить названия, либо в CSS уменьшить шрифт и расстояние между пунктами меню.
Эти блоки отделены от друг друга совершенно. Вы можете при открытии корзины вызвать js событие для обновления корзины отправив запрос AJAXом на /cart/.
В ответ придет json с секцией cart.
Тогда можно в js вызвать
$.cart('updateCartBlock', секция с cart);Всё съезжает потому, что у Вас меню верхнее при сжатии экрана не помещается и пункт последний переносится вниз вляя на блоки.
Зайдите в конструктор сайта, выберите страницу по умолчанию во вкладках. И в самом верхнем блоке отредактируйте секцию 9, чтобы она была не на 9, а на 12 колонок. Если там есть пустая секция 3, то её можно удалить.
Я думаю Вам надо в тех. поддержку постучаться, т.к. там надо покопаться в глубинах модуля СДЕК.
{*addcss file="720.css?v={$css_version}"}
{addcss file="mobile.css?v={$css_version}"*}В файле 960.css уберите обёртку
@media screen and (min-width: 980px) {и снизу не забудьте:
}Ну тогда вот так:
{$shop_config=ConfigLoader::byModule('shop')}
{assign var=catalog_config value=ConfigLoader::byModule('catalog')}
{assign var=product_items value=$cart->getProductItems()}
<div class="cart" id="cartItems">
<div class="top">
<div class="cartIcon">Корзина</div>
{if !empty($cart_data.items)}
<a class="clearCart" href="{$router->getUrl('shop-front-cartpage', ["Act" => "cleanCart"])}"><span>очистить корзину</span></a>
{/if}
</div>
<div class="padd">
{if !empty($cart_data.items)}
<div class="head">
<div class="price">Цена</div>
<div class="amount">Количество</div>
</div>
<form method="POST" action="{$router->getUrl('shop-front-cartpage', ["Act" => "update"])}" id="cartForm">
<input type="submit" class="hidden">
{hook name="shop-cartpage:products" title="{t}Корзина:товары{/t}"}
<div class="viewport">
<table class="cartProducts">
{foreach from=$cart_data.items key=index item=item name="items"}
{assign var=product value=$product_items[$index].product}
{if $product}
{assign var=cartitem value=$product_items[$index].cartitem}
{if !empty($cartitem.multioffers)}
{assign var=multioffers value=unserialize($cartitem.multioffers)}
{/if}
<tr data-id="{$index}" data-product-id="{$cartitem.entity_id}" class="cartitem{if $smarty.foreach.items.first} first{/if}">
<td class="colPreview">
<a class="preview" href="{$product->getUrl()}"><img src="{$product->getMainImage(64,64)}" alt="{$product.title}"/></a>
</td>
<td class="colTitle">
<a class="title" href="{$product->getUrl()}">{$product.title}</a><br>
{if $product->isMultiOffersUse()}
<div class="multiOffers">
{foreach $product.multioffers.levels as $level}
{if !empty($level.values)}
<div class="title">{if $level.title}{$level.title}{else}{$level.prop_title}{/if}</div>
<select name="products[{$index}][multioffers][{$level.prop_id}]" data-prop-title="{if $level.title}{$level.title}{else}{$level.prop_title}{/if}">
{foreach $level.values as $value}
<option {if $multioffers[$level.prop_id].value == $value.val_str}selected="selected"{/if} value="{$value.val_str}">{$value.val_str}</option>
{/foreach}
</select>
{/if}
{/foreach}
{if $product->isOffersUse()}
{foreach from=$product.offers.items key=key item=offer name=offers}
<input id="offer_{$key}" type="hidden" name="hidden_offers" class="hidden_offers" value="{$key}" data-info='{$offer->getPropertiesJson()}' data-num="{$offer.num}"/>
{if $cartitem.offer==$key}
<input type="hidden" name="products[{$index}][offer]" value="{$key}"/>
{/if}
{/foreach}
{/if}
</div>
{elseif $product->isOffersUse()}
<select name="products[{$index}][offer]" class="offer">
{foreach from=$product.offers.items key=key item=offer name=offers}
<option value="{$key}" {if $cartitem.offer==$key}selected{/if}>{$offer.title}</option>
{/foreach}
</select>
{/if}
</td>
<td class="colAmount">
<div class="amoutPicker">
<div class="qpicker">
<a class="inc"></a>
<a class="dec"></a>
</div>
<input type="text" maxlength="4" class="fieldAmount" value="{$cartitem.amount}" name="products[{$index}][amount]">
<span class="unit">
{if $catalog_config.use_offer_unit}
{$product.offers.items[$cartitem.offer]->getUnit()->stitle}
{else}
{$product->getUnit()->stitle}
{/if}
</span>
<div class="error">{$item.amount_error}</div>
</div>
</td>
<td class="colPrice">
<div class="floatbox">
<span class="priceBlock">
<span class="priceValue">{$item.cost}</span>
</span>
</div>
<div class="discount">
{if $item.discount>0}
скидка {$item.discount}
{/if}
</div>
</td>
<td class="colRemove">
<a title="Удалить товар из корзины" class="remove" href="{$router->getUrl('shop-front-cartpage', ["Act" => "removeItem", "id" => $index])}"></a>
</td>
</tr>
{assign var=concomitant value=$product->getConcomitant()}
{foreach from=$item.sub_products key=id item=sub_product_data}
{assign var=sub_product value=$concomitant[$id]}
<tr>
<td colspan="2" class="colTitle">
<label>
<input
class="fieldConcomitant"
type="checkbox"
name="products[{$index}][concomitant][]"
value="{$sub_product->id}"
{if $sub_product_data.checked}
checked="checked"
{/if}
>
{$sub_product->title}
</label>
</td>
<td class="colAmount">
{if $shop_config.allow_concomitant_count_edit}
<div class="amoutPicker">
<div class="qpicker">
<a class="inc"></a>
<a class="dec"></a>
</div>
<input type="text" maxlength="4" class="fieldAmount concomitant" data-id="{$sub_product->id}" value="{$sub_product_data.amount}" name="products[{$index}][concomitant_amount][{$sub_product->id}]">
<span class="unit">{$product->getUnit()->stitle}</span>
</div>
{else}
{$sub_product_data.amount} {$sub_product->getUnit()->stitle}
{/if}
<div class="error">{$sub_product_data.amount_error}</div>
</td>
<td class="colPrice">
<span class="priceBlock">
<span class="priceValue">{$sub_product_data.cost}</span>
</span>
<div class="discount">
{if $sub_product_data.discount>0}
скидка {$sub_product_data.discount}
{/if}
</div>
</td>
<td></td>
</tr>
{/foreach}
{/if}
{/foreach}
</table>
</div>
{/hook}
{hook name="shop-cartpage:summary" title="{t}Корзина:итог{/t}"}
<div class="cartFooter">
<div class="linesContainer">
{foreach from=$cart->getCouponItems() key=id item=item}
<div class="line">
<a href="{$router->getUrl('shop-front-cartpage', ["Act" => "removeItem", "id" => $id])}" class="remove" title="{t}удалить скидочный купон{/t}"></a>
<div class="text">{t}Купон на скидку{/t} {$item.coupon.code}</div>
<div class="digits"></div>
</div>
{/foreach}
{if $cart_data.total_discount>0}
<div class="line">
<div class="text">Скидка на заказ</div>
<div class="digits">{$cart_data.total_discount}</div>
</div>
{/if}
</div>
<div class="discountText">
<span class="info">Купон на скидку (если есть): </span><input type="text" class="couponCode{if $cart->getUserError('coupon')!==false} hasError{/if}" size="12" name="coupon" value="{$coupon_code}">
<a class="applyCoupon">применить</a>
</div>
<div class="total"><span class="text">Итого:</span> <span class="total-value">{$cart_data.total}</span></div>
<div class="loader"></div>
</div>
{/hook}
{hook name="shop-cartpage:bottom" title="{t}Корзина:подвал{/t}"}
<div class="bottom">
<noscript><input type="submit" class="onemoreEmpty recalc" value="{t}Пересчитать{/t}"></noscript>
<a href="{$router->getUrl('shop-front-checkout')}" class="submit{if $cart_data.has_error} disabled{/if}">{t}Оформить заказ{/t}</a>
<a href="JavaScript:;" class="continue">Продолжить покупки</a>
{if $THEME_SETTINGS.enable_one_click_cart}
<a href="JavaScript:;" class="toggleOneClickCart"><span class="tabletHidden">Заказать по телефону</span></a>
{/if}
<div class="error" {if !empty($cart_data.errors)}style="display: block;"{/if}>
{foreach from=$cart_data.errors item=error}
{$error}<br>
{/foreach}
</div>
</div>
{/hook}
</form>
{* Покупка в один клик в корзине *}
{if $THEME_SETTINGS.enable_one_click_cart}
{moduleinsert name="\Shop\Controller\Block\OneClickCart"}
{/if}
{else}
<div class="empty">В корзине нет товаров</div>
{/if}
</div>
</div>Ждите ответа в поддержке.
PunBB
Судя по всему getProductItems который у Вас в $product_item ещё не знает об удалённом товаре, видимо из-за кэша.
Пробуйте
{assign var=product_items value=$cart->getProductItems()}Заменить на
{assign var=product_items value=$cart->getProductItems(false)}Выведите и $product_items тоже
{foreach from=$cart_data.items key=index item=item name="items"}Замените на и покажите, что у Вас получилось.
<pre>
{var_dump($cart_data.items)}
</pre>
{foreach from=$cart_data.items key=index item=item name="items"}Проинспектируйте с помощью firebug верстку. Там сразу будет видно откуда "ноги растут". У вас подключено и mobile.css и 720.css
Посмотрите даже исходный код страницы.
И да. Еще по поводу мобильных версий.
Разрешение экрана в пикселях
1080*1920Разрешение экрана браузера в пикселях
360*559......
Device Pixel Ratio: 3.000
Это именуется Retina. https://habrahabr.ru/post/139682/
И мобильная версия темы Perfume под это не адаптирована. При просмотре с моего смартфона (и я думаю, что со всех где Retina) картинки расплываются и выглядят отвратительно.
Для логотипа специально загрузил картинку в три раза большего размера (714*216) и в шаблоне вручную прописал.<img src="/storage/system/original/logo.png" width="238" height="72" alt="тепло.ру"/>видимо, нужно то же самое сделать везде, где есть картинки.
Собственно это одна из причин желания отключить мобильную версию. Хоть и не основная.
http://forum.readyscript.ru/topic/742/i … oi-versii/
http://fstrange.ru/coder/about_all/reti … ation.html
https://habrahabr.ru/post/150071/
Вам в тех. поддержку. Поможем.
За корзину в окне и на отдельной странице отвечает cartpage.tpl
Дайте просто ссылку на сайт
Не за что ![]()
И ещё приведите код корзины шаблона.
Ну судя по ошибке он у Вас жалуется на то, что товар который вы положили в корзину либо не существует либо отсутствует. Закомментируйте Ваш код с удаление и проверьте он генерирует ошибку или нет.
Откройте файл /modules/shop/model/cart.inc.php и посмотрите описания к функциям, а также тип входящих данных.
Форум ReadyScript Сообщения от Закусило Александр