751

(9 ответов, оставленных в Вопросы по работе с системой)

на beatsound - все понятно. Там пример про /reservation/, /oneclick/ - это понятно это обычные ссылки, которые попали естественным образом в поисковый индекс. Здесь нет никакого таинства или бага.

Все-таки на мобильных устройствах это отдельные страницы, да и PC их можно всегда открыть в новом окне, поэтому и присутствуют в поиске.

Не ясно как в поисковик может попасть url /text-4/ если все ссылки на сайте всегда были /text-blog/
(не берем ситуацию, когда у категории намеренно полгода был не задан alias, а потом он появился, т.е. оба урла долгое время светились)

752

(9 ответов, оставленных в Вопросы по работе с системой)

По вопросу о дубляжах. Ну какой же это дубль, если о нем никто не знает? Дубль - это скорее проиндексированный одинаковый контент по разным урлам. Все-таки не ясно как в поисковик может попадать url, на который нигде ссылок и на который никто не заходит (т.е. метрика тоже о нем не знает).

Авторы сайта beatsound (наши партнеры) не задавали правила в robots.txt, поэтому у них и проиндексированы ссылки на резервацию, купить в 1 клик, капчу.

Вы можете использовать в шаблонах в ссылках, которые открываются в диалоге вместо href, data-href, в случае Формы заказать и купить в 1 клик. Наш JS подхватит такие ссылки, а для поисковиков они будут незаметны.

<a data-href="ссылка" class="inDialog">Заказать</a>

По вопросу 404 ошибки. напишите, пожалуйста, в поддержку ссылку на этот товар, и доступ в админ. панель, мы посмотрим более детально и напишем, в чем проблема.

Обновлена документация для разработчиков. Изменения в формате модулей коснулись следующего:
1. Сведения о модуле должны теперь указываться в файлае /config/module.xml
2. Файл /config/install.inc.php - теперь не обязательный
2. Файл /config/uninstall.inc.php - теперь не обязательный

754

(9 ответов, оставленных в Вопросы по работе с системой)

- Уточните, пожалуйста, чем вам мешает техническая возможность открытия страницы по двум урлам.
Дубляжей в поисковиках это не создает, так как в публичной части все урлы одного вида.
Например: только /text-blog/, если задан алиас. А алиас должен быть задан.

У нас для примера все страницы форума доступны по урлам:

http://forum.readyscript.ru/forum/1/voprosy-po-rabote-s-sistemoi/
а также forum.readyscript.ru/forum/1/

При этом в поисковиках нет ни одного проидексированного урла forum.readyscript.ru/forum/1/,
просто потому, что на этот урл нет ссылок.


- Если вы хотите исключить какие-то адреса из индексации, то добавьте в robots.txt
(можно прямо из админ. панели из раздела Управление->Сайты):

User-agent: *
Disallow: /oneclick/
Disallow: /reservation/
Disallow: /cart/

Google и Яндекс официально поддерживают robots.txt.

- У вас случайно ЧПУ имя не цифрами задано? (ЧПУ должен содержать хотя бы одну букву)

- Подавляющему большинству ЧПУ нужно у всех товаров. У нас есть инструменты для удобного автоматического проставления ЧПУ сразу всем товарам. В разделе Веб-сайт->Настройка модулей->Каталог товаров. Справа ссылка "Добавить ЧПУ имена товарам и категориям". Дополнительно, автогенерация ЧПУ есть в форме редактирования товара при потере фокуса у поля название. Вы можете стереть сгенерированное ЧПУ, если оно вам не нужно.

- Чтобы добавить страницу с адресом /kontakty/, нужно воспользоваться разделом Веб-сайт->Меню.

- По валидности, нужны более детальные сведения.
В каком CSS файле? Какие конкретно ошибки или предупреждения? Если там какой-нибудь warning на CSS-хак, то это не требует внимания. Если что-то посерьезнее, то нужно разобраться. Валидность - это хорошо, но кроссбраузерность и качество отображения страницы в большем числе браузеров - важнее, а как вы понимаете не всегда эти вещи совместимы.

Если у вас задача: Использовать собственный код в контроллере регистрации, то

перегрузить стандартный контроллер можно двумя способами (оба описаны в нашей статье - http://readyscript.ru/text-blog/Kak-pra … yScript/):

1. Перегрузкой маршрута (рекомендуется)
2. Подменой класса (.my.inc.php)
--------------------------------------------------------------------

Если у вас задача - вставить при отправке SMS проверку разрешения от пользователя, то мне кажется вы выбрали оптимальный путь (доработав всего один класс (смс-транспорт) и полностью сохранив возможность обновления):

1. Создали доп. поле стандартными средствами в настройках модуля Пользователь. (насколько я понял)
2. Создали свой транспортный модуль для SMS, который проверяет данное поле. (это все равно нужно было бы делать, т.к. стандартный модуль не делает проверку на разрешение пользователя)

Не совсем понятно в чем костыльность вашего решения? (Возможно задача бы решалась проще, если бы было какое-нибудь событие перед отправкой SMS, которое бы можно было перехватывать и останавливать отправку.)
Или опишите, как бы вы хотели видеть реализацию вашей задачи?

756

(3 ответов, оставленных в Предложения по улучшению системы)

Думаю, Олег неверно понял вопрос. У автора все работает в корзине, он имел ввиду, что не хватает колонки Цена, в которой бы отображалась стоимость 1 шт. товара.

Это вопрос уровня шаблонов. Это в любой момент можно реализовать изменив шаблон корзины.
/shop/view/cartpage.tpl

Цена находится в поле single_cost. Вот пример:

Элементы корзины:<br>
{$product_items=$cart->getProductItems()}

{foreach $cart_data.items as $index=>$item}
{$product=$product_items[$index].product}
{$cartitem=$product_items[$index].cartitem}

Наименование: {$product.title}
Цена 1 шт.: {$item.single_cost}
Стоимость: {$item.cost} 
Скидка {$item.discount}

{/foreach}

В стандартных шаблонах дизайнеры предложили убрать эту колонку, исходя из того, что пользователя больше интересует цена его покупки, чем сверка цен за 1 единицу. Но это вопрос субъективный, поэтому шаблон можно смело менять как пожелаете.

С сегодняшнего дня доступен вывод средств с лицевого счета ReadyScript на карты Visa, Mastercard, Яндекс.Деньги, расчетный счет(для физических и юридических лиц).

Раннее, потратить заработанные деньги можно было только на наши продукты и услуги, теперь вы можете забрать деньги и купить все что угодно. Партнерская программа теперь становится еще привлекательнее.

Подробности тут

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

Если вы в одно время будете управлять одним сайтом и открывать только его в соседних вкладках - такой проблемы не будет.

Или используйте возможность "Приватное окно", которая есть в браузерах FireFox, Chrome,
если хотите управлять одновременно двумя мультисайтами. Т.е. в одном приватном окне - можно держать открытой админку и клиентскую часть одного сайта.

Этот вопрос правильнее адресовать хостеру или принимающей стороне писем (почему они положили ваше письмо в спам). Движок формирует письмо обычной командой PHP - mail(), в которую передается Email получателя, тело письма, стандартные заголовки FROM, REPLY.

Непосредственно отправкой письма занимается ПО, установленное на хостинге (обычно exim). Письма могут попадать в спам по огромному числу причин:

1. IP сервера в спам-листах, IP целой подсети в спам-листах, домен в спам листах.
2. Отсутствие необходимых подписей или заголовков письма (DKIM,....)
3. Наличие в письме по мнению фильтрующих программ спам-слов
4. Внутренние алгоритмы, фильтры, ограничения принимающей стороны. (наличие жалоб на спам на подобные письма, и.т.д.)

Возможно просто достаточно однажды вытащить письмо из спама вручную и mail.ru будет класть далее эти письма во входящие? (проверили, с наших тестовых аккаунтов на mail.ru письма успешно доходят, не в спам)

У нас на доменах .local и .test - не происходит блокировок.  Видимо у вас что-то не так настроено.

Попробуйте удалить папку /cache. Убедитесь, что из PHP можно обратиться к ВАШЕМДОМЕН.local  и у вас действительно открывается ваш сайт. Пример файла для проверки доступности локального домена.

<?
echo file_get_contents('ВАШДОМЕН.local/robots.txt');

должен вернуть содержание вашего robots.txt

Если необходимо выполнить следующий запрос:

SELECT COUNT(*)
FROM products as A
INNER JOIN second as B ON A.id = B.product_id
WHERE A.num > 0;

Можно сделать это так:

1 способ. С помощью запроса через \RS\Orm\Request

  $result = \RS\Orm\Request::make()
    ->from(new Orm\Product, 'A')
    ->join(new Orm\Second, 'A.id = B.product_id', 'B')
    ->where('A.num > 0')
    ->count();

т.е. можно создать метод в вашей модели, например getSomethingCount() и реализовать в нем такой запрос.


2 способ. С помощью стандартных \Catalog\Model\Api и метода getListCount();

$product_api = new \Catalog\Model\Api();
$product_api->queryObj()
    ->join(new Orm\Second, 'A.id = B.product_id', 'B')
    ->where('A.num > 0');
  
$result = $product_api->getListCount();

т.е. метод queryObj() возвращает текущий объект \RS\Orm\Request, который загружен в API, соответственно там по умолчанию уже присутствует часть запроса

\RS\Orm\Request::make()
    ->from(new Orm\Product, 'A')

и вам остается только добавить недостающую часть.

762

(4 ответов, оставленных в Вопросы по работе с системой)

1. Мета теги для главной прописываются в разделе Веб-сайт->Заголовки, мета-теги.
-- Необходимо нажать справа справа "Добавить"
-- Выбрать маршрут: "Главная страница"
-- Добавить мета-теги

2. У нас есть массовое редактирование. Вы можете зайти в определенную категорию, поставить флажок "Выбрать товары на всех страницах" ( http://readyscript.ru/manual/user_admin_elements.html ), внизу нажать на кнопку Редактировать. В открывшемся окне установить флажок "Показывать товар"

3. У вас включено подробное отображение информации об ошибках. Снимите галочку "Подробно отображать информацию об исключениях" в разделе Управление->Настройки системы.

Это наверняка разовая история.

Вы можете удалить фото через базу из таблицы ..._images
После удаления записей из базы нужно зайти в раздел Веб-сайт->Настройка модулей->Блок фотографий и выбрать справа "Удалить несвязанные фото". Данная операция удалит файлы изображений со всеми миниатюрами, на которые нет ссылок в базе.

После этого загрузите массово новые изображения.

1,2. Удалять фото у товаров можно только через карточку товара в админ. панели.

3. При импорте фото из ZIP, происходит сравнение по имени файла фото.
Если фото с таким же именем было загружено к товару раннее, то оно повторно загружаться не будет.
Т.е. работает правило - либо добавляю либо пропускаю.

Эта ошибка с остатками была исправлена достаточно давно. Вы используете самые свежие версии системы?

766

(11 ответов, оставленных в Вопросы по работе с системой)

Что нужно для работы системы уведомлений с сайта?

1. Заполнить Email администратора в разделе Веб-сайт->Настройка сайта
2. Заполнить поле От(From), Reply, в разделе Веб-сайт->Настройка сайта->Уведомления.

В поле From, Reply - нужно указывать Email с доменом, на котором находится ваш сайт. Например info@yoursite.ru

Если ваш сайт имеет кирилический домен, то адрес необходимо указывать в punycode.
вот здесь можно получить Puny представление вашего домена: http://r01.ru/domain/whois/instruments/converter.php

Пример: для сайта тестовыйсайт.рф, email будет выглядеть так: info@xn--80adirb0auddcg7h.xn--p1ai

Если после заполнения указанных выше полей письма не приходят (обязательно посмотрите в папке СПАМ), то 90% (по статистике обращений в нашу поддержку) - это проблема на хостинге. Можно провести небольшой тест, чтобы узнать работает ли отправка писем на хостинге, для этого нужно создать тестовый файл test.php в корне сайта, следующего содержания.

<?php
$to            = 'YOUREMAIL@MAIL.RU'; //Здесь укажите ваш Email
$subject    = 'the subject';
$message = 'hello';
$headers   = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

var_dump(mail($to, $subject, $message, $headers));

Далее нужно запустить созданный скрипт через браузер http://ВАШСАЙТ.RU/test.php.
Если вы увидите в браузере false или вам не придет письмо, значит на хостинге действительно существует проблема с отправкой письма. В этом случае нужно писать в поддержку хостинга со ссылкой на ваш тестовый файл test.php

767

(2 ответов, оставленных в Вопросы по работе с системой)

Насколько я понял вы внесли изменения в стандартный файл Smarty core/smarty/plugins/modifier.date_format.php,
чтобы добавить поддержку русских месяцев и формата вывода "23 ноября 2015".

Оригинал мы изменять не можем, для поддержки простого обновления дистрибутива Smarty внутри ReadyScript с официального сайта Smarty.

Но это и не нужно, потому что у нас уже есть плагин, нашего производства, который делает то, что вам нужно.
Он называется "dateformat" (без подчеркивания) располагается в папке /core/smarty/rsplugins/modifier.dateformat.php, он поддерживает весь набор стандартных инструкций обычного плагина date_format + дополнен конструкциями:

  • %k - отображает сколько времени назад произошло событие "сегодня","вчера", "N дней назад", если больше месяца, то пишет дату "23.02.2010".

  • %v - отображает месяц на русском языке "января", "февраля",....

  • @time - возвращает время в формате ЧЧ:ММ

  • @date - возвращает дату в формате ДД.ММ.ГГГ

  • @sec - возвращает кол-во секунд

  • %datetime - возвращает дату и время в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС

Как этим пользоваться?

{$date = '2014-01-20 10:30:00'}

//Нужно вывести дату в форме "20 января 2014"
{$date|dateformat:"%d %v %Y"}

//Нужно вывести дату в форме "[Сегодня|Вчера|5 дней назад|20.01.2014], в 10:30".
{$date|dateformat:"%k, в @time"}

768

(6 ответов, оставленных в Вопросы по работе с системой)

Пока такой возможности, к сожалению,  нет, но обязательно появится в будущих версиях.

Да, вы можете загрузить GIF анимированный баннер,
необходимо будет только использовать флажок "Использовать оригинал файла для вставки" непосредственно в окне редактирования баннера. (Чтобы система не пережимала его и соответственно не терялась анимация)

Вы также можете загрузить и Flash баннер, но необходимо будет подкорректировать шаблон баннера
/modules/banners/view/blocks/bannerzone/zone.tpl или /modules/banners/view/blocks/slider/slider.tpl, стандартно там используется
<img src="{ссылка на баннер}">, а в случае с flash Баннером нужно будет использовать что-то вроде:

<object width="280" height="600" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,18,0" 
type="application/x-shockwave-flash" data="{ссылка на баннер}">
    <param name="quality" value="high" /> 
    <param name="scale" value="noborder" /> 
    <param name="salign" value="t" /> 
    <param name="wmode" value="opaque" /> 
    <param name="src" value="{ссылка на баннер}" /> 
    <embed width="280" height="600" id="linebanner" src="{ссылка на баннер}"> </embed> 
</object>

770

(6 ответов, оставленных в Вопросы по работе с системой)

Пример использования SEO генератора есть у нас в блоге http://readyscript.ru/text-blog/Novye-v … adyScript/.

Можно подменить ссылку на раздел Управления заказами у пункта меню в админ. панели, сразу с установленными фильтрами.

Это делается - копированием /modules/shop/config/handlers.inc.php в
/modules/shop/config/myhandlers.inc.php

myhandlers.inc.php должен быть примерно такого содержания (код не проверял, возможны синтаксические ошибки):

<?php
namespace Shop\Config;

class MyHandlers extends Handlers
{

    public static function getMenus($items){

        $items = parent::getMenus($items);        
        //Перебираем пункты меню и модифицируем ссылку у нужного
        foreach($items as &$item) {
              if ($item['alias'] == 'allorders') {
                   $item['link'] = '%ADMINPATH%/shop-orderctrl/?f[dateof]='.date('Y-m-d');
              }
        }

        return $items;
    }
}

Это очень странно. На факт оплаты у нас нет условий на списание остатка товара.

У нас в коде установлено простое условие, если включена указанная выше опция,
то всегда при создании заказа списывать товар со склада, выбранного вручную в случае самовывоза или "по-умолчанию".

Проверьте, у вас хотя бы один склад отмечен, как склад "по-умолчанию"?
Проверьте, пожалуйста, на вкладке Комплектации - количество уменьшается?

Если включена опция - "Запретить оформление заказа, если товаров недостаточно на складе"
в разделе Веб-сайт->Настройка модулей->Магазин, то в системе включится учет остатков,
при оформлении заказа количество товара будет уменьшаться.

Чтобы изменить баланс пользователя, необходимо вызвать метод:

$transactionApi = new \Shop\Model\TransactionApi();
$transactionApi->addFunds($user_id, $amount, $writeoff, $reason);

//$user_id - ID юзера
//$amount - сумма
//$writeoff - флаг списания. Если true, то сумма $amount списывается, false - добавляется
//$reason - комментарий к операции
$transactionApi = new \Shop\Model\TransactionApi();
$transactionApi->addFunds(123, 25.50, false, 'Пополнение баланса пользователя на 25 руб 50 коп. пользователя ID 123');

$transactionApi = new \Shop\Model\TransactionApi();
$transactionApi->addFunds(123, 25.50, true, 'Списание 25 руб. 50 коп. с баланса у пользователя ID 123');

775

(10 ответов, оставленных в Вопросы по работе с системой)

Поменять название сайта можно в разделе Управление->сайты

Поменять КПП на ОГРН можно скопировав шаблон /modules/shop/view/printform/commoditycheck.tpl
в /templates/{ВАША ТЕМА}/moduleview/shop/printform/commoditycheck.tpl

И поправив его как вам угодно в папке назначения.