Для данной задачи Ваши поля не подойдут. Т.к. в Вашем случае они в БД хранятся в сериализованном виде (зашифрованы). Вам надо написать свой доп модуль и добавить поля к объекту пользователя, тогда в админке можно будет вывести колонку.
О том как добавить поле объекту написано здесь:
http://forum.readyscript.ru/topic/287/k … adyscript/

А потом, уже расширять колонку из своего модуля.

Более конкретно укажите, какая колонка Вам нужна и с какими сведениями?

Желательно, чтобы понимать процессы пройти данный курс.
http://readyscript.ru/text-blog/Kak-soz … adyScript/

Вы можете сделать это с помощью правки css. Либо взять часть css, которая за это отвечает в файле styles.css из темы perfume, и соответственно шаблон /templates/perfume/catalog/blocks/category.tpl и скопировать.

Какие именно вы имеете ввиду?

Я не понял, т.к. функции addjs и addcss здесь не причём. Они добавляют всего лишь между тегами <head> теги с назначаемыми стилями.
http://readyscript.ru/dev-manual/dev_sm … ion_addcss
http://readyscript.ru/dev-manual/dev_sm … tion_addjs

Комментарий по основному вопросу, будет дан чуть позже.

Получилось?

Подскажите, пожалуйста, как можно вставить произвольный текст после DOCTYPE или как можно использовать конструкции типа "before" и "after" из smarty-функций "addcss" и "addjs" применительно к тегу HTML?

Приведите пожалуйста пример, что Вам конкретно нужно получить.

Интересный вопрос и сейчас я его раскрою.
Дело в том, что в системе для того, чтобы сформировать данный ползунок нужно каким-то образом получить максимальную и минимальную цену в зависимости от категории и применённых фильтров. По умолчанию мы не поддерживаем такое получение и не возвращаем сведений, поэтому придётся немного поколдовать, чтобы получить данные.
Первое что надо сделать это получить данные во фронт контроллере списка товаров, т.к. именно в нём применяются все фильтры. Соответственно там мы и должны получать данные.
Нам надо сделать копию файла
/modules/catalog/controller/front/listproducts.inc.php с таким же именем, но окончанием .my.inc.php

т.е.
/modules/catalog/controller/front/listproducts.my.inc.php

Откроем его и посмотрим в метод actionIndex().

Нам надо заменить:

$basefilter = $this->api->applyBaseFilters();
$total      = $this->api->getMultiDirCount();
                            
$this->api->queryObj()->groupby($this->api->defAlias().'.id');
//Устанавливаем сортировку
$sort_field = $this->cur_sort == 'rank' ? $this->cur_sort : $this->api->defAlias().'.'.$this->cur_sort;
$this->api->setSortOrder($sort_field, $this->cur_n_sort);

На:

/**
* @var \RS\Orm\Request
*/
$minmaxQuery = clone $this->api->queryObj();                                                  
                
$basefilter = $this->api->applyBaseFilters();
$total      = $this->api->getMultiDirCount();
                
//Добавим цены к запросу
$current_cost_type = \Catalog\Model\CostApi::getUserCost(); //Текущий тип цен
$current_cost_type = \Catalog\Model\CostApi::getInstance()->getManualType($current_cost_type);
$minmaxQuery->leftjoin(new \Catalog\Model\Orm\Xcost(), "A.id = XC.product_id AND XC.cost_id='{$current_cost_type}'", 'XC');

$minmaxQuery->orderby(''); 
$minmaxQuery->select = 'max(XC.cost_val) interval_to,min(XC.cost_val) interval_from';
$moneyArray = $minmaxQuery->exec()->fetchRow();
$moneyArray['step']  = 1;
$moneyArray['round'] = 1;
$moneyArray['unit']  = \Catalog\Model\CurrencyApi::getDefaultCurrency()->stitle;
$moneyArray['heterogeneity']  = $this->getHeterogeneity($moneyArray['interval_from'],$moneyArray['interval_to']);
                
$this->router->getCurrentRoute()->money_array = $moneyArray;
                            
$this->api->queryObj()->groupby($this->api->defAlias().'.id');
$this->api->setSortOrder($this->api->defAlias().'.'.$this->cur_sort, $this->cur_n_sort);

В указанном выше кусочке кода мы получаем массив $moneyArray на основе запроса максимальной и минимальной цены для формирования данных, которые нам понадобятся в шаблоне.
Эти значения мы поместим в наш класс роута который будет доступен по данному url в любом блок контроллере с помощью

$this->router->getCurrentRoute()->money_array = $moneyArray;

Это нам понадобится, чтобы передать в блок контроллер фильтров данные значения. Т.к. первым отработает фронт контроллер, то после него отработают блок контроллеры из обёртки. А это позволит нам передать туда наши данные для дальнейшего помещения в шаблон.

Функция getHeterogeneity это функция, которая подготавливает массив для рисочек нашего ползунка.
Теперь добавим эту функцию в наш класс.

/**
* Получает риски для цен диапозона цен
* 
* @return string
*/
function getHeterogeneity($min,$max){
       $max = floatval($max); 
       $min = floatval($min); 
       //Проверим возможно ли это
       if ($max==$min) return "";
       $delta = $max-$min;
       $d25 = ceil($min + (($delta/100)*25)); 
       $d50 = ceil($min + (($delta/100)*50)); 
       $d75 = ceil($min + (($delta/100)*75)); 
       return '"25/'.$d25.'","50/'.$d50.'","75/'.$d75.'"';
}

С этой часть мы покончили. Теперь нам необходимо перейти к блок контроллеру фильтров в которых обработать наши сведения и поместить в шаблон фильтров дополнительные сведения.
Для этого делаем копию блок контроллера фильтров

/modules/catalog/controller/block/sidefilters.inc.php

и  также

/modules/catalog/controller/block/sidefilters.my.inc.php

И заходим в класс SideFilters нашего нового файла в метод actionIndex().

Добавим в шаблон в массив через $this->view->assign новый элемента массива

$this->view->assign(array(
     ...
     'moneyArray' => $this->router->getCurrentRoute()->money_array,
     ...
));

Троеточие используется для примера данных.

Теперь нам нужен шаблон "blocks/sidefilters/filters.tpl" (У каждой темы соответственно в своей папке).
Строки, которые отвечают у нас за отображение фильтра надо заменить на:

{if $param.show_cost_filter}
                        <div class="priceFilter typeInterval">
                            <span class="title">Цена:</span>
                            <div class="typeInterval fromToPrice">
                                <input type="hidden" class="textinp fromto" name="bfilter[cost][from]" value="{$basefilters.cost.from}" data-start-value="">
                                <input type="hidden" class="textinp fromto" name="bfilter[cost][to]" value="{$basefilters.cost.to}" data-start-value="">
                            </div>
                            
                            <div class="priceInterval fromToLine">               
                                <input type="hidden" data-slider='{ "from":{$moneyArray.interval_from}, "to":{$moneyArray.interval_to}, "step": "{$moneyArray.step}", "round": {$moneyArray.round}, "dimension": " {$moneyArray.unit}", "heterogeneity": [{$moneyArray.heterogeneity}]  }' value="{$basefilters.cost.from|default:$moneyArray.interval_from};{$basefilters.cost.to|default:$moneyArray.interval_to}" class="pluginInput" data-closest=".fromToPrice" data-start-value="{$basefilters.cost.from|default:$moneyArray.interval_from};{$basefilters.cost.to|default:$moneyArray.interval_to}">
                            </div>  
                            <input type="submit" value="Применить" class="onemore submitFilter" style="display:none;"/>
   </div>
{/if}

html у нас готов теперь надо активировать js.
В примере я воспользуюсь нашим стандартным слайдером (jslider - jquery.slider.min.js), который есть во всех наших темах.
У нас это указано так.


<script type="text/javascript">
                $(function() {
                    $('.typeInterval .pluginInput').each(function() {
                        var $this = $(this);
                        
                        var fromTo = $($this.data('closest'));  
                        fromTo.hide(); 
                        $this.jslider( $.extend( $(this).data('slider'), { callback: function(value) {
                            
                            var values = value.split(';');
                            $('input[name$="[from]"]', fromTo).val(values[0]);
                            $('input[name$="[to]"]', fromTo).val(values[1]);
                            $this.trigger('change');
                        }}));
                        
                        $('input[name$="[from]"], input[name$="[to]"]', fromTo).change(function() {
                            var from = $('input[name$="[from]"]', fromTo).val();
                            var to = $('input[name$="[to]"]', fromTo).val();
                            $this.jslider('value', from, to);
                        });
                    });
</script>

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

{$THEME_IMG} -  путь к текущей теме для картинок
{$THEME_CSS} - путь к текущей теме  для CSS
{$THEME_JS} - путь к текущей теме для js
{$current_user} - объект текущий пользователь
{if $is_auth} - флаг авторизован или нет
{$current_site} - объект текущий сайт
{if $url->isAjax()} - Аякс запрос сейчас пришёл в шаблон или нет
{$router} - объект маршрутизатора \RS\Router\Manager

Также напоминаю статью:
Создание темы оформления
и
Как включить отображение ошибок ReadyScript

2,261

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

Ну тут не всё так просто. Word, Excel и RTF это не формат для веб-программирования. Но идея интересная сама по себе. Оставьте у нас заявочку на пожелание в helpdesk.readyscript.ru

2,262

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

Неплохо. Спасибо за подсказку. В планах пока небыло, но возможно появится, правда делать наверное будем доп модулем. Вы можете оставить пожелание об этом у нас на helpdesk.readyscript.ru или же заказать доработку нам.

2,263

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

Вопрос про печать для нужд Почты России актуальна.
Интегрироваться можно через сервис: http://russianpostcalc.ru/api-devel.php

Там подробное API. Все проще, чем выглядит. Основная форма, конечно, Ф116.
В настройки сайта стоит вынести поле для указания key для API.

Это возможно?!
---
Да, возможно. Оставьте ваше пожелание пожалуйста на helpdesk.readyscript.ru, ну или закажите нам доработку, тогда функционал появится очень быстро.

2,264

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

Отлично. Спасибо за подсказку!

2,265

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

Ааа. Ну это другое дело. Добавьте пожаление у нас в helpdesk.readyscript.ru. Обсудим.

2,266

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

Основная валюта

Ну тогда всё просто создаём валюту(Товары->Валюты) доллар с коэфициентом 1.
Ставим ей флаги на:
1.Это базовая валюта?
2.Выбирать по-умолчанию?
3.Пересчитать все цены
После чего сохраняем

2,267

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

Вот блин на 16 секунд быстрее)

2,268

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

Всё просто:) Обращение к полям, как к массиву.

{$dir.title}

2,269

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

Я просто в самом яндекс директе не вижу нигде кнопки для загрузки списка. Или вы просто таким образом подготавливаете материал с которым работать?

2,270

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

- Где находится языковой файл, чтобы перевести клиентскую часть? Сергей, она у вас случайно не переведена, сможете дать?

У нас есть руководство по интернационализации.

Но по сути всё сводится к тому, что в теме оформления в шаблонах русские фразы должны быть обёрнуты в функцию t.

{t}Я русская фраза{/t}

А в messages.lng.php как было приведено выше пишешь перевод на нужный язык.

<?php
return array(
      'Я русская фраза' => 'I am Russian phrase'
);

2,271

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

Разве это не нужная функция? Вы предлагаете выгружать более 2 000 позиций в яндекс директ руками? мб полный адрес до товара и не нужен, а вот адрес вида /категория/товар очень нужен

Подскажите пожалуйста где в Яндекс.директ, это используется?

2,272

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

Подскажите, пожалуйста, следующее:
- Как сделать цены в долларах;

У вас будет это основной валютой? Или Вам просто нужно в долларах получить значение, то в итоге покупать будут за рубли.

2,273

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

Вывод полного url у нас в CSV не предусмотрен за ненадобностью. Поэтому на данный момент либо вручную, либо дописать модуль или заказать его.

2,274

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

За вывод статей на странице с постраничной навигацией отвечает front контроллер \Article\Front\PreviewList, который соответственно находится в /modules/article/controller/front/previewlist.inc.php. В самом низу данного файла, если его открыть идёт передача переменных в шаблон. Начиная с $this->view->assign
И там как раз видно, что за текущую категорию отвечает переменная $dir, которая и означает текущую категорию.

А дальше просто посмотрим, что в ней в шаблоне:

<pre>
{var_dump($dir)}
</pre>

И на данный момент в адресной строке страница вывода статей выглядит так сайт.ру/text-article/ и сайт.ру/text-news. Можно ли привести аддрес к виду сайт.ру/article сайт.ру/news

Нет. Дело в том, что в система строится на маршрутах (масках адреса url), которые конкретно говорят ей, что нужно обрабатывать соответствующий фронт контроллер. Ваш адрес красивый, но не однозначный, что касается сео, то изменений с нашим или Вашим адресом вы не почувствуйте. Поисковики нормально кушают их. Маршруты в системе задаются в папках конфига каждого модуля, в файле handlers.inc.php, метод getRoute.
Маршрут можно конечно и перегрузить своим именно для Вашего случая, но всё станет намного хуже в плане обработки и дальнейшей поддержки.
Подробнее о маршрутах у нас в документации.

2,275

(7 ответов, оставленных в Вопросы по созданию тем оформления)

Также, только вместо одинарных ковычек надо поместить в двойные Ваш код.