avatar
+19.03
38.572

Андрей

Вот пример команды hello с экшеном test. При вызове из консоли php ls hello test эта команда выведет логин пользователя с id=1 средствами движка.

class CmdHello extends LSC {
    protected $_name;

    /**
     * Выводим помощь о команде
     */
    public function getHelp() {
        return <<<EOD
USAGE
  ls hello test
EOD;
    }

    function __construct() {
        E::getInstance()->Init();
    }

    public function actionTest($aArgs) {
        $oAdmin = E::User_GetUserById(1);
        echo $oAdmin->getLogin();
    }

}


В класс команды добавлен конструктор в котором инициализируется движок
function __construct() {
    E::getInstance()->Init();
}


И теперь обращаться к методам модуля можно так E::Module_Method($param1, [$param2, .., $paramN])
Для этого нужно в настройках конкретного виджета указать страницу на которой его нужно выводить, например если нужно вывести виджет прямого эфира на страницах page, то в файл локальных настроек виджетов app/config/widgets.php нужно добавить конфиг
// Прямой эфир
$config['widgets'][] = array(
    'name' => 'stream',     // исполняемый виджет Stream
    'wgroup' => 'right',    // группа, куда нужно добавить виджет
    'priority' => 100,      // приоритет
    'action' => array(
        'index',
        'community',
        'filter',
        'page',
        'blogs',
        'blog' => array('{topics}', '{topic}', '{blog}'),
        'tag',
    ),
    'params' => array(
        'items' => array(
            'comments' => array('text' => 'widget_stream_comments', 'type'=>'comment'),
            'topics' => array('text' => 'widget_stream_topics', 'type'=>'topic'),
        ),
    ),
);

где в список экшенов, на которых этот виджет выводится указан ещё и page
В файле common/templates/skin/[ШАБЛОН]/tpls/actions/page/action.page.show.tpl
в блоке переменных шаблона
{block name="layout_vars"}
    {$noSidebar=true}
{/block}

убрать {$noSidebar=true}
Исправил )
altocms.ru/people/ -> altocms.ru/user/
В файле app/config/config.local.php добавляем правило реврайта
$config['router']['rewrite']['people']    = 'user';


Второй пример: перейти с url example.com/about/admin на профиль пользователя
копируем настроку из основного конфига в файл app/config/config.local.php
// Правила реврайта для REQUEST_URI
$config['router']['uri'] = array(
    //'~^(uploads/images/[\w\/\_\-\.]+\.(png|jpg|jpeg|gif)\/?$)~i' => 'img/$1',
    '~^_run/assets/([\w\-\.]+/.+)$~i' => 'asset/$1',
    // запрет обработки статичных файлов с заданными расширениями
    /* допустимые значения:
     *  - @ignore   - запрос игнорируется и его обработка прекращается
     *  - @die(msg) - обработка запроса прекращается с выдачей сообщения msg
     *  - @404      - обработка прекращается с выдачей кода 404
     */
    '~.+\.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)\/?$~i' => '@404',
);


И в ней добавляем правило:
'~^about/([0-9a-z_\-]*)$~i' => 'profile/$1/',
Внёс исправления. Обновитесь с гитхаба и попробуйте ещё раз.
Проверьте какой префикс таблиц установлен в БД и при обновлении. Вы пишете a_, может он другой?
Вывод системной ошибки исправил,
Описание всех изменений в шаблонах вынес в отдельный топик — http://altocms.ru/963.html
Попробуйте в конфиге app/config/config.local.php установить параметры по правилу:

/**
 * Настройка путей
 * Если необходимо установить движек в директорию(не корень сайта) то следует сделать так:
 * $config['path']['root']['web']    = 'http://'.$_SERVER['HTTP_HOST'].'/subdir';
 * $config['path']['root']['server'] = $_SERVER['DOCUMENT_ROOT'].'/subdir';
 * и возможно придётся увеличить значение $config['path']['offset_request_url'] на число вложенных директорий,
 * например, для директории первой вложенности www.site.ru/community/ поставить значение равное 1
 *
 * Как правило полный путь до папки или файла содержит в названии 'dir'
 * URL-путь содержит в названии 'url'
 */


Может стоит изменить $config['path']['offset_request_url']=2
Да, конечно, все виджеты туда попадают.
Для шаблонов есть рад изменений в версии 1.1 (пока коротко, но будет отдельным топиком):
— Добавлены шаблоны сниппетов common/templates/skin/experience/tpls/snippets.
— Добавлено шаблон модального окна вставки изображений common/templates/skin/experience/tpls/modals/modal.insert_img.tpl
— Добавлен шаблон поля картинки common/templates/skin/experience/tpls/fields/customs/field.custom.single-image-uploader-edit.tpl
Но как то не очень красиво — копировать объявление всего виджета. Вот бы, скажем, указать лишь name...
Такой функционал реализован в версии 1.1. Кроме того, положение виджетов вы можете менять и в админке «Сайт > Виджеты», а не в файле конфига.

На счет left/right. Тут всё просто: в любом месте шаблона вы можете указать
{wgroup group='very_very_right_position'}

а в конфиге виджета
'wgroup' => 'very_very_right_position', 

он там и выведется. То есть left/right — это просто места в шаблоне. Если вам удобно — назовите мето размещения виджетов column и используйте его )

В таком случае, как в один момент времени значение могет быть == 'left и != 'left'? :)
Не может — тема одноколоночная — либо слева, либо справа. Может быть тема трёхколоночная вообще без переменной sidebarPosition — это особенности конкретного шаблона.
Скорее всего вы правильно делаете, но не до конца
1. Переопределяем виджет в конфиге приложения. Например, если я хочу перенести влево виджет прямого эфира, то в конфиг приложения app/config/widgets.php копирую определения виджета из основного конфига (заметьте, я поменял только 'wgroup' => 'left')
$config['widgets'][] = array(
    'name' => 'stream',     // исполняемый виджет Stream
    'wgroup' => 'left',    // группа, куда нужно добавить виджет
    'priority' => 100,      // приоритет
    'action' => array(
        'index',
        'community',
        'filter',
        'blogs',
        'blog' => array('{topics}', '{topic}', '{blog}'),
        'tag',
    ),
    'params' => array(
        'items' => array(
            'comments' => array('text' => 'widget_stream_comments', 'type'=>'comment'),
            'topics' => array('text' => 'widget_stream_topics', 'type'=>'topic'),
        ),
    ),
);


2. Но в шаблоне старт-кит у меня нет левой колонки, добавив в шаблон common/templates/skin/start-kit/tpls/_index.tpl строки
{block name="layout_vars"}
    {$sidebarPosition='left'}
{/block}


3. Но это поможет не во всех случаях, поскольку в шаблонах экшенов также могут быть переменные, которые наш левый зайдбар затрут, потому в шаблонах экшенах нужно проверить есть ли еще переменные и если есть, то корректно их переслать в _index.tpl так, например, для шаблона экшена главной страницы common/templates/skin/start-kit/tpls/actions/index/action.index.index.tpl добавить в блок шаблонов флаг append что бы получилось так:
...
{block name="layout_vars" append}
    {$menu="topics"}
{/block}
...


4. Ну и в конце проверить какая группа шаблонов всё таки выводится в сайдбаре. В шаблоне common/templates/skin/start-kit/tpls/commons/common.sidebar.tpl видим, что выводится правая группа
{wgroup group='right'}

а в настройках виджета — левая, соответственно поменяем на
{wgroup group='left'}


Это был длинный способ, а короче можно просто в шаблоне common/templates/skin/start-kit/themes/default/layouts/default.tpl поменять местами колонки )
Если редактор пропал, то в консоли браузера однозначно будет ошибка в каком-то js-скрипте. Что там написано?
В файле common/plugins/br/classes/actions/ActionUploader.class.php в строке 281 замените
$this->Viewer_SetResponseAjax('jsonIframe', FALSE);

на
$this->Viewer_SetResponseAjax('json', FALSE);
Статистика отображается только администратору и больше ни кому.
У вас ошибка, нет открывающейся ссылки . Нужно так:
<a href="{$aMenuItem.url}">
    {$aMenuItem.text}
</a>

а у вас так:

    {$aMenuItem.text}
</a>
Делается точно также, адрес статической страницы состоит из двух частей, например page/about, page/hello и т.д. page — одинакова для всех — это имя экшена страницы, а вторая часть — урл страницы, который задается при ее создании в админке, так вот что бы вынести статическую страницу в меню третьего уровня нужно поступить так (продублирую about в меню третьего уровня):
1. В конфиге указать параметры ссылки так:
'about' => array(
    'text' => 'О проекте',
    'url' => Config::Get('path.root.url') . 'page/about/',
),

2. Добавить в шаблон меню код проверки на активность
было
<li {if $sItemSelect==$sKey || (Router::GetAction()=='blog' and Router::GetActionEvent()==$sKey) }class="active"{/if}>

стало
<li {if $sItemSelect==$sKey || (Router::GetAction()=='blog' and Router::GetActionEvent()==$sKey)  || (Router::GetAction()=='page' and Router::GetActionEvent()==$sKey) }class="active"{/if}>
Статические страницы создаются и редактируются через админку: Админка>Контент>Страницы. Там в настройках каждой странице есть галочка «Отображать на главной странице»