Намного проще сделать 301 редиректы со старых урлов товаров на новые. Возможно вам данный вариант подойдет?
826 05.01.2015 00:40:59
Re: Структура урл на сайте (3 ответов, оставленных в Вопросы по разработке модулей и API системы)
827 04.01.2015 23:13:27
Re: Структура урл на сайте (3 ответов, оставленных в Вопросы по разработке модулей и API системы)
Простого способа это сделать - нет. Так как вы хотите убрать якорь из маршрута, который придает ему уникальность по сравнению с другими урлами на сайте. Будет необходимо влазить в глубины маршрутизации. Ну и конечно все URL_имена категорий перечислять в маршруте к категории и товару.
Если с категориями все не так сложно, можно видоизменить маршрут
//Просмотр категории продукции
$routes[] = new \RS\Router\Route('catalog-front-listproducts', array(
'/catalog/{category}/',
'/catalog/'
), null, t('Просмотр категории продукции'));
Примерно таким образом (перечислив все идентификаторы категорий, чтобы обойти конфликты с другими маршрутами):
//Просмотр категории продукции
$routes[] = new \RS\Router\Route('catalog-front-listproducts', array(
'/{category:(demo-produkty|elektronika)}/',
'/catalog/'
), null, t('Просмотр категории продукции'));
То с формированием Урлов для товара придется переделать его стандартный маршрут, примерно на такой:
//Карточка товара
$routes[] = new \RS\Router\Route('catalog-front-product',
'/{category:(demo-produkty|elektronika)}/{id}/', null, t('Карточка товара'));
И переделать метод getUrl у объекта \Catalog\Model\Orm\Product, необходимо дописать передачу
параметра category в маршрут, так как стандартно там передается только id
Но правда могут повылазить проблемы в непредсказуемых местах, ну и производительность будет немного меньше, если у вас слишком много категорий, так что пробуйте.
На практике мы делали однажды подобную работу для одного клиента, выгоды никакой не получили абсолютно для поисковой выдачи.
828 04.01.2015 16:07:25
Re: Дисковое пространство (3 ответов, оставленных в Вопросы по работе с системой)
Оригиналы фото - ни в коем случае нельзя удалять. В ReadyScript все миниатюры изображений создаются по мере обращения к ним из браузера, если для каких-то товаров у вас еще нет миниатюр, то в случае отсутствия оригиналов - они больше никогда не появятся.
Наоборот, можете удалить все миниатюры /storage/photo/resized, они будут создаваться постепенно, пока пользователи будут обходить ваш сайт. Это даст небольшой запас времени.
Единственное что можно удалить - это папку storage/tmp - если она у вас есть.
Для системного решения, конечно нужно место срочно увеличивать. Благо сейчас место на диске почти ничего не стоит.
Тот же DigitalOcean 20GB, SSD, 512MB, - 5$/мес.
829 03.01.2015 17:49:03
Re: Нет редиректа со страниц без слеша (2 ответов, оставленных в Вопросы по разработке модулей и API системы)
В интернете - не существует однозначного ответа каким должен быть урл, со слешем в конце или без (http://imperacms.ru/articles/seo/url-so … avilno.htm),
а соответственно можно выбрать как один вариант, так и второй. Мы выбрали вариант со слешем в конце.
URL без слеша в конце - это неизвестный для системы URL, поэтому система возвращает 404. Система однообразно ведет себя для всех неизвестных адресов, а именно отдает 404.
По правильному должен быть редирект на страницу со слешем.
Если он вам нужен, вы можете создать правило в .htaccess.
Не думаю, что он нужен всем, так как адреса внутренних страниц вручную никто не набирает вслепую,
а поисковики берут те адреса, что представлены на сайте. Соответственно никакой проблемы - нет.
Редиректы нужны только в случае, если страница была, например, раннее доступна как по адресу со слешем, так и без, чтобы исключить дубли. А в нашем случае все корректно - только со слешем в конце, без слеша страницы никогда не были доступны поисковикам - там 404.
830 24.12.2014 22:05:20
Re: .htaccess и слэш на конце url (13 ответов, оставленных в Вопросы по работе с системой)
Вероятно, что данное правило может сломать урлы с параметрами (надо проверить):
/catalog/категория/?page=2
/catalog/категория/?f[id_характеристики]=значение_харктеристики
831 24.12.2014 16:08:02
Re: Ограничение длинны поля servername таблицы images (1 ответов, оставленных в Вопросы по разработке модулей и API системы)
servername - это же внутреннее поле нашей системы, мы туда больше 25 символов никогда не записываем. В целях экономии пространства, которое будет занимать индекс MySQL и соответственно оптимизации, установлено данное ограничение.
Если вам необходим больший объем данного поля, вы все правильно сделали, что увеличили его индивидуально для себя.
Это можно сделать:
1. просто в базе, тогда это будет до первого обновления модуля "Блок фотографий",
2. можно сделать с помощью дополнительного модуля (рекомендуемое решение), и обработки в нем события инициализации ORM объекта Photo\Model\Orm\Image
Примерно таким обработчиком (handlers.inc.php):
<?php
namespace ВАШ_МОДУЛЬ\Config;
class Handlers extends \RS\Event\HandlerAbstract
{
function init()
{
$this
->bind('orm.init.photo-image');
}
/**
* Модифицируем ORM объект - "изображение"
*
* @param \Photo\Model\Orm\Image $image - объект "изображение"
*/
public static function ormInitPhotoImage(\Photo\Model\Orm\Image $image)
{
$image->__servername->setMaxLength(255);
}
}
Не забудьте переустановить модуль "Блок фотографий" (ссылка в настройках модуля), после активации вашего стороннего модуля. Система в этом случае сама изменит длину поля в базе.
3. Можно сделать с помощью создания image.my.inc.php, у которого изменена длина поля в стандартном описании полей. (не рекомендуемый способ)
832 24.12.2014 15:53:11
Re: Каким образом вывести размеры списком (5 ответов, оставленных в Вопросы по работе с системой)
Вот так можно:
{if $product->isOffersUse()}
{foreach $product.offers.items as $key=>$offer}
{if $offer.num>0} {* offer.num - общий остаток комплектации на всех складах *}
{if !$offer@first}, {/if}{$offer.title} {* название комплектации *}
{/if}
{/foreach}
{/if}
833 24.12.2014 15:37:23
Re: Карточка товара - Короткое название (1 ответов, оставленных в Вопросы по работе с системой)
При импорте из CSV данные попадают в базу в том виде, в котором они есть. В данный момент CSV реализован, как низкоуровневый инструмент чтения/записи данных в базу.
Просто замените двойные кавычки на " перед импортом с помощью автозамены.
834 23.12.2014 15:47:37
Re: Групповое изменение цены в комплектации (4 ответов, оставленных в Вопросы по работе с системой)
Если у вас в системе только одна валюта, то вы можете оставить в колонке цена только число.
Например, сделать автозамену "(RUB)" на "", тем самым оставить только цифры в ячейках, увеличить вашу цену по формуле и загрузить обратно в систему.
В случае, если система не находит в скобках идентификатор валюты, то она устанавливает стоимость в базовой валюте.
835 23.12.2014 13:37:03
Re: Обмен данными с 1С (6 ответов, оставленных в Вопросы по работе с системой)
1С предусматривает такой механизм, поэтому мы его поддерживаем, здесь однозначности - нет, для кого-то это все-таки "нужная" номенклатура, которая пришла с сайта.
Этот функционал рождает ряд вопросов, что если в заказе есть товары и которые были выгружены из 1С и те, которые не были выгружены из 1С. (выдергивать товары из заказа - невозможно, так как это влияет на стоимость и другие параметры заказа). А вообще не выгружать такой заказ - тоже не правильно. Опишите, подробнее, как вы видите реализацию?
836 23.12.2014 13:20:34
Re: Покупки в 1 клик спорное удовольствие (2 ответов, оставленных в Вопросы по работе с системой)
Покупка в 1 клик - это аналог "Заказать звонок менеджера". Поэтому этот инструмент носит информационный характер для администраторов. И предусматривает, что менеджер перезвонит клиенту и создаст полноценный заказ в админ. панели. В шаблоне есть переменная - $is_auth, которая принимает значение true, если пользователь авторизован, можете её использовать.
837 23.12.2014 13:00:54
Re: Обмен данными с 1С (6 ответов, оставленных в Вопросы по работе с системой)
Нет, все не совсем так.
В 1С выгружаются все заказы, которые удовлетворяют заданным в настройках модуля обмена условиям, а именно статусам.
1С позволяет принимать заказы с товарами, которых нет в базе номенклатуры. В этом случае в документе "заказ" должно отображаться название товара и цена, но товар не будет связан с номенклатурой в 1С.
838 22.12.2014 16:41:35
Re: Обмен данными с 1С (6 ответов, оставленных в Вопросы по работе с системой)
Да, так можно.
Только убедитесь, что в настройках модуля обмена на вкладке "Каталог товаров", опция "Что делать с товарами, отсутствующими в файле импорта" имеет значение - "Ничего".
839 19.12.2014 17:30:42
Re: Адрес в профиле пользователя и в админке (1 ответов, оставленных в Вопросы по работе с системой)
На эти адреса ссылаются заказы, поэтому их удаления в настоящее время - нет.
Напишите пожелание в наш сервис пожеланий.
840 18.12.2014 18:06:37
Re: Формулы в универсальной доставке (1 ответов, оставленных в Вопросы по работе с системой)
Там выполняется eval() того, что написано в колонке Формула,
т.е. по сути вы можете использовать все математические функции PHP (использовать любые выражения PHP).
Из доступных переменных -
$S - Сумма заказа
$W - Общий вес заказа
Например: round($S*0.3) - это означает 30% от стоимости заказа, сумма окрулена.
841 18.12.2014 17:59:37
Re: как временно отключить некоторые типы доставки (3 ответов, оставленных в Вопросы по работе с системой)
Да, это хорошее предложение, в новых версиях добавим флажок "публичности" для оплат и доставок.
842 18.12.2014 13:28:36
Re: как временно отключить некоторые типы доставки (3 ответов, оставленных в Вопросы по работе с системой)
Только с помощью удаления, или в крайнем случае прописать в шаблоне shop/checkout/delivery.tpl условие исключения.
843 17.12.2014 15:46:27
Re: как в шаблоне product.tpl обратиться к полю товарного предложения (3 ответов, оставленных в Вопросы по разработке модулей и API системы)
Очень объемный вопрос, но постараюсь вкратце объяснить.
Так как при выборе комплектации в селекторе, не происходит перезагрузок страницы, вам необходимо это делать с помощью JavaScript. Посмотрите, как меняются цены при выборе селектора комплектаций. Что-то аналогичное нужно судя по всему вам.
Информация по комплектации сначала выводятся в атрибутах элемента формы:
<select name="offer">
{foreach from=$product.offers.items key=key item=offer name=offers}
<option value="{$key}" {if $smarty.foreach.offers.first}checked{/if} {if $check_quantity}data-num="{$offer.num}"{/if} data-change-cost='{ ".offerBarcode": "{$offer.barcode|default:$product.barcode}", ".myCost": "{$product->getCost(null, $key)}", ".lastPrice": "{$product->getCost('Зачеркнутая цена', $key)}"}' data-sticks='{$offer->getStickJson()}'>{$offer.title}</option>
{/foreach}
</select>
А затем уже в JavaScript вы можете получить текущую выбранную комплектацию, считать у неё атрибут и сделать с ним что угодно(например вывести куда-нибудь).
844 17.12.2014 13:11:33
Re: как в шаблоне product.tpl обратиться к полю товарного предложения (3 ответов, оставленных в Вопросы по разработке модулей и API системы)
{foreach $product.offers.items as $offer_sortn=>$offer}
{* $offer - здесь объект \Catalog\Model\Orm\Offer *}
{$offer.num}
{$offer.id}
{/foreach}
845 17.12.2014 13:06:20
Re: Как правильно добавить дополнительное поле в таблицу product_offer (5 ответов, оставленных в Вопросы по разработке модулей и API системы)
Да, если в аргументе 2,3 метода bind - не задан callback на другой обработчик.
846 17.12.2014 12:44:14
Re: Проблемы с подменой классов (1 ответов, оставленных в Вопросы по разработке модулей и API системы)
Исправили данную ошибку, будет опубликовано в ближайшем обновлении.
847 17.12.2014 12:27:55
Re: Как правильно добавить дополнительное поле в таблицу product_offer (5 ответов, оставленных в Вопросы по разработке модулей и API системы)
Ошибка в следующем:
Вы подвешиваетесь на событие orm.init.catalog-offer. 2,3 аргумент у bind - не задан, соответственно это означает, что система будет искать в данном классе функцию для обработки события с названием события, за вычетом точек и минусов.
т.е. Вам необходимо назвать функцию вместо ormInitCatalogProduct так:
public static function ormInitCatalogOffer(\Catalog\Model\Orm\Offer $offer)
848 16.12.2014 20:54:49
Re: Выгрузка характеристик из 1с в отдельные свойства (6 ответов, оставленных в Вопросы по работе с системой)
В сентябре 2014 вышла новая версия модуля обмена. Для импорта многомерных комплектаций теперь достаточно установить один флажок в настройках модуля обмена данными с 1С.
Эта информация есть в новости http://readyscript.ru/text-blog/novye-v … adyscript/
Таким образом импорт многомерных комплектаций, теперь не требует ввода свойств на стороне 1С с описанием возможных значений параметров комплектаций.
849 15.12.2014 14:56:31
Re: Как правильно добавить дополнительное поле в таблицу product_offer (5 ответов, оставленных в Вопросы по разработке модулей и API системы)
Торговое предложение - это обычный ORM объект класса \Catalog\Model\Orm\Offer.
В нашей статье подробно расписано, как расширять ORM объект из дополнительного модуля. (см. обработку события orm.init.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА)
http://readyscript.ru/text-blog/Kak-pra … adyScript/
Следует учитывать, что Торговое предложение имеет не автоматически генерируемую форму отображения в админ. панели. Т.е. если необходимо выводить данное поле визуально в админ. панели, то необходимо будет править шаблон \modules\catalog\view\form\product\offers.tpl
850 15.12.2014 13:10:15
Re: Разная цена для разных складов (6 ответов, оставленных в Вопросы по работе с системой)
Нет, к складу привязывается только остаток.