avatar
+7.59
13.931

Артемий

Проблемы твоей есть решение

1. Файл
{if $oFile=$oTopic->getFieldFile($iFileFieldId)}
    Если есть файл.
{/if}


2. Поле
{if $oAnotherField = $oTopic->getField($iAnotherFieldId)}
     {$sAnother = $oAnotherField->getValue()}
     {if $sAnother == "что-то определенное"}
         Можно еще значение проверить.
     {/if}
{/if}
Признаю, вопрос был поставлен не корректно, но вопрос я решил)

Может пригодится, делюсь))
Идем сюда:
/engine/classes/modules/text в файле Text.class.php
После этого:
        /**
         * youtu.be
         */
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|m.|)youtu\.be\/([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui',
            '<iframe src="//www.youtube.com/embed/$1" width="' . $iWidth . '" height="' . $iHeight . '" ' . $sIframeAttr . '></iframe>',
            $sText
        );


Вставляем вот это:


/**
	* coub.com
	*/
	$sText = preg_replace('/<video>http:\/\/(?:www\.|)coub\.com\/view\/(\w+).*<\/video>/i', '<iframe src="http://coub.com/embed/$1?muted=false&autostart=false&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false" allowfullscreen="true" frameborder="0" width="640" height="480"></iframe>', $sText);


Вот и все)

Решение нашел на сайте LiveStreet и для LS, но на Альто естественно тоже все заработало)
shtrih
shtrih
shtrih
shtrih
Попробуй как-то так:

$aPages = ['mypage', 'another-page'];
$config['$root$']['router']['uri'] = [
    '[~^page/(' . join('|', array_map('preg_quote', $aPages, array_pad([], count($aPages), '~'))) . ')$~i]' => '$1',
];

PHP 5.4+
Вот эту строчку (69) заменить на:
'topic_text_source', 'string', 'max' => Config::Get('module.topic.max_length'), 'min' => 0,

(т.е. вместо «2» ставим «0»)
можно, но по-хорошему ещё видимо не тестировалось никем
http://altocms.ru/1439.html
http://altocms.ru/1439.html#comment24564
я обкатывал, мне нужно было разделить контент на два домена, при этом оставив пользователей и все их данные общими — на стадии тестирования всё работало отлично: блоги и топики созданные на разных доменах никак не пересекались, проблем с удалением блогов/топиков/комментов с совпадающими ID тоже не было, но в боевой ещё не запускал
shtrih
shtrih
Никак, почему-то.
Потому что должно быть либо {if !($oBlog->getId() == '82')}, либо {if $oBlog->getId() != '82'}
Как-то так в шаблоне
{$oBlog=$oTopic->getBlog()}
{if !$oBlog->getType() == 'custom_type'}
выводим топик
{/if}
aVadim
aVadim
Недавно внезапно возникла подобная проблема. Оказалось, что хостер чего-то у себя обновлял, и для php 5.3 почему-то вдруг включилась по умолчанию директива magic_quotes_gpc

В общем, проверьте, не включена ли magic_quotes_gpc
Могу ошибаться, но почему-то кажется, что те, кто не видит отличий — это те, кто поставил голый сайт и посмотрел на пустую главную, не более. Если хотя бы набрать /admin, то уже многое становится ясным.

Но обзоров не хватает, согласен. Идеально было б какой-то сравнительный обзор подготовить и сравнить с бесплатными движками из коробки — не только LS, но и WP, Joomla, Drupal… Но где ж найти такого, кто может это сделать?
Проверьте ещё раз внимательно файл
common/templates/frontend/libs/vendor/prettyphoto/js/jquery.prettyphoto.js

Должно быть так:
Ребята, это уже сделано. Добавлять изображения фотосета в текст топика можно с помощью сниппета "<alto:photoset/>" через редактор.

У сниппета несколько параметров, которые позволяют выбирать номера картинки для вывода в фотосет, его расположение и топик из которого картинки будут браться (по умолчанию текущий)
<!-- Вставка всего фотосета -->
<alto:photoset>
<!-- Вывод 5 картинок фотосета начиная с 3-ей  -->
<alto:photoset from="3" limit="5">
<!-- Вывод фотосета из топика с ID 123 и выровнять его вправо  -->
<alto:photoset topic="123" position="right">


В тексте топика можно расположить сколько угодно блоков фотосета как до ката, так и после него.
А вывод фотосета после текста топика вообще можно отключить убрав галочку под редактором фотосета


Вот так он будет выглядеть
Как вариант. Для вывода кол-ва изображений в короткой новости в файле
common/templates/skin/experience-simple/tpls/topics/topic.type_default-list.tpl после:
{if $oTopic->getType() == 'link'}
     <span class="fa fa-globe" title="{$aLang.topic_link}"></span>
{/if}

Вставить этот код:
{if count($aPhotos)<$oTopic->getPhotosetCount()}
    ({$oTopic->getPhotosetCount()} {$oTopic>getPhotosetCount()|declension:$aLang.topic_photoset_count_images})
{/if}


Для вывода кол-ва изображений в полной новости, в файле
common/templates/skin/experience-simple/tpls/fields/field.photoset-show.tpl
необходимо заменить этот фрагмент кода (примерно 6-тая строка):
{if count($aPhotos)<$oTopic->getPhotosetCount()}

на этот:
{if $oTopic->getPhotosetCount()}

С этими исправлениями — вывод количества изображений работает. Но, честно говоря, я не большой любитель таких «правок», по этому тоже хотелось бы услышать разработчиков.
В модуле Topic есть метод GetTopicsByFilter(). Вот, например, получение списка топиков с сортировкой по ID авторов:
$aFilter = array(
    'order' => 'user_id',
);
$aTopics = E::ModuleTopic()->GetTopicsByFilter($aFilter);
Аналогичный метод есть и у модуля Blog:
$aFilter = array(
    'order' => '...',
);
$aBlogs = E::ModuleBlog()->GetBlogsByFilter($aFilter);
Вывести в rss топики с главной — altocms.ru/rss/index
Вывести в rss новые топики — altocms.ru/rss/new

Количество выводимых в rss зависит от количества выводимых на главную/новые. Это количество указывается в параметр 'module.topic.per_page' но можно исправить в коде. Для топиков с главной здесь вместо Config::Get('module.topic.per_page') * 2 установить своё, например 42, и будет у вас в rss выводится 42 топика с главной.

Тоже самое для новых топиков, но только здесь.
Может уже писали об этом?
Заметил у себя (и на других сайтах тоже), что на странице sute.ru/category/ в блоках категорий не отображается правая сторона. Собственно:
$config['topic_top_number'] = 5;  // Количество топ-статей

— вот это.
Решение нашлось в плагине «experience». Как я понял он перенимает приоритет некоторых настроек конфигурационного файла вышеуказанного плагина (Категории)? В частности:
//Config::Set('plugin.categories.topic_top_period', 0);
//Config::Set('plugin.categories.topic_top_number', 1);
//Config::Set('plugin.categories.topic_new_number', 5);

— я эту часть закомментировал вовсе…
aVadim
aVadim
Получить и сразу отобразить число друзей прямо в шаблоне для текущего юзера можно так:
{if E::IsUser()}
    Друзей: {E::User_GetCountUsersFriend(E::User())}
{/if}

Можно и хуком сделать:
<?php
class HookFriendsCount extends Hook {
    /**
     * Регистрируем хуки
     */
    public function RegisterHook() {
        $this->AddHook('template_friends_count', 'TplFriendsCount', __CLASS__);
    }

    /**
     * Обработка хука
     *
     * @return string
     */
    public function TplFriendsCount() {
        return E::IsUser() ? E::User_GetCountUsersFriend(E::User()) : '0';
    }
}
А в шаблоне в нужное место ставим:
{if E::IsUser()}
    Друзей: {hook run=friends_count}
{/if}

Либо, если уж совсем по всем правилам делать, делаем маленький файл шаблона (напр., friends_count.tpl:
{if E::IsUser()}
    Друзей: {$iFriendsCount}
{/if}
А обработчик хука записываем так:
public function TplFriendsCount() {
    $iFriendsCount = E::IsUser() ? E::User_GetCountUsersFriend(E::User()) : '0';
    $this->Viewer_Assign('iFriendsCount ', $iFriendsCount );
    return $this->Viewer_Fetch('friends_count.tpl');
}

Но важно понимать, что запрос числа друзей — это обращение к базе. Поэтому если речь про то, что это надо вывести в одном месте страницы для текущего юзера — то это нормально. А если, например, на странице выводится большой список юзеров и для каждого нужно вывести число друзей, то это уже лучше писать плагин, чтоб оптимизировать число запросов.
aVadim
aVadim
Если речь о том, что нужно править стили, то лучше всего сделать копию одной из тем и работать с ней. Например, собственная тема будет называться new.

Для начала копируем .../start-kit/themes/light/ в .../start-kit/themes/new/.

А дальше есть два варианта:

1) Если умеете обращаться с LESS-файлами, то меняете, как нужно .../start-kit/themes/new/style-light.less и/или .../skin/start-kit/assets/less/classes.less и компилируете, чтоб получился .../start-kit/themes/new/style.css

2) Если с LESS дружбы нет, то создаете свой файл стилей, например, .../start-kit/themes/new/custom.css и там переопределяете все CSS-классы, какие нужно. А потом подключаете этот файл в настройках шаблона в .../start-kit/settings/config/config.php, добавив строку:
'___path.skin.dir___/themes/___view.theme___/css/custom.css',


И, разумеется, не забудьте саму тему у скина сменить, задав new
Как пример, в теме experience добавлена кнопка br, изменения внесены в скрипт common/templates/skin/experience/themes/default/js/theme.js в строках 437-451. Стили в файле common/templates/skin/experience/assets/less/expierence/markitup.less в строке 166, картинка с иконками кнопок здесь — common/templates/skin/experience/assets/images/editor_icons.png
Упс, забыл скобки, спасибо ). Отвечу чуть развёрнутее. Поступить можно двумя способами:

Способ 1. Создать собственный шаблон для каждого типа контента. Сейчас контент всех типов выводитмся через три шаблона:
topic.type_default-edit.tpl: шаблон страницы редактирования;
topic.type_default-list.tpl: шаблон элемента списка;
topic.type_default-show.tpl: шаблон страницы топика (контента);
Например, новый тип контента называется «preview», то можно скопировать эти шаблоны и в имени сменить «default» на «preview» что бы получилось так: topic.type_default-edit.tpl и т.д. Затем в этих шаблонах просто удалить вывод тегов. Получится что все типы контента будут выводится через шаблоны «default», а контент типа «preview» через свой специальный шаблон.

Способ 2. В каждом из этих шаблонов поставить проверку на тип при выводе тегов (на примере шаблона experience):
topic.type_default-edit.tpl в строке 98
{if $oContentType->getContentUrl()!='preview'}
    {include file="fields/field.tags-edit.tpl"}
{/if}

topic.type_default-list.tpl в строке 83
{if $oTopic->getType()!='preview'}
    {include file="fields/field.tags-show.tpl"}
{/if}

topic.type_default-show.tpl: в строке 161
{if $oTopic->getType()!='preview'}
    {include file="fields/field.tags-show.tpl"}
{/if}


Как вариант, если типов контентов, в которых не нужно выводить теги несколько, то можно делать проверку так (здесь 'preview', 'note' и 'other' — типы контента где НЕ нужно выводить теги):
{if !in_array($oTopic->getType(), ['preview', 'note', 'other'])}
    {include file="fields/field.tags-show.tpl"}
{/if}