Держите тогда полное извращение :)
ВЫборка топиков по фильтру $aFilter
{assign var="aFilter" value=[
// список id блогов
'blog_id' => [
1, 2, 3
],
// список типов блогов
'blog_type' => [
'personal', 'open'
],
// список id пользователей
'user_id' => [
1, 2, 3
],
// опубликован топик или нет
'topic_publish' => 1/0,
// выборка по рейтингу топика
'topic_rating' => [
// значение рейтинга
'value' => 1,
// ваше/ниже значения рейтинга
'type' => 'top'/'down',
// или те что отправлены на главную админом, работает только при 'type' => 'top'
'publish_index' => 1
],
// список типов топиков
'topic_type' => [
'topic', 'link', 'question', 'photoset'
],
// топики созданные позднее или в это время этой даты
'topic_new' => 'Y-m-d H:i:s',
// топики созданные позднее этой даты
'topic_date_more' => 'Y-m-d H:i:s'
]}
{assign var="iCountTopic" value=COUNTTOPIC}
{assign var="aTopicsByBlog" value=$LS->Topic_GetTopicsByFilter($aFilter, 1, $iCountTopic)}
{include file='topic_list.tpl' aTopics=$aTopicsByBlog['collection']}
Все пункты фильтра независимы, можете их располагать в любом порядке и в любом сочетании в зависимости от ваших хотелок.
Мой пример в комментариях выше будет выглядеть так
Параметр order — по чему сортируем, может быть равен blog_id, blog_title, blog_rating, blog_count_user, blog_count_topic. Надеюсь понятно что за что отвечает.
Параметр order_way — как сортируем, asc — с наименьшего до максимального (по возрастанию), desc — с максимального к минамальному (по убыванию)
Если не боитесь править движок \classes\actions\ActionBlog.class.php
Если надо переименовать пункт меню в профиле — заходим /templates/language/russian.php и правим нужный пункт меню user_menu_profile и другие. Там же можно и добавить новый пункт меню.
Предварительно создаем EventName в ActionProfile.class.php и представление в /templates/skin/имя шаблона/ActionProfile/имяэвента.tpl
Смотрим и радуемся.
В папке имаги у нас будет допустим 15 изображений с именами с 1 до 15, с одинаковым расширением .png (или любое другое).
Если это для фона, то само собой делаете типа:
<div style="background:url(http://сайтец.ру/имаги/{$random}.png) no-repeat fixed center top">...</div>
Практически данные классы меняют местами колонки.
Соответственно, из CSS можно убрать незадействованные классы (content-right, content-profile и т.п.).
Также для удобства настроек я сделал следующее:
— убрал со всех шаблонов переменную {assign var=«sidebarPosition» value='left'}
— в конфиг добавил
$config['sidebar_left'] = array('profile', 'settings', 'talk'); // экшены, на которых сайдбар должен располагаться слева
— в header.tpl и sidebar.tpl добавил
{* Список Actions (экшенов), на которых сайдбар будет слева *}
{if (in_array(Router::GetAction(), Config::Get('sidebar_left')))}
{$sidebarPosition = 'left'}
{/if}
Решение менее гибкое (экшены целиком), но удобное.
Обратил внимание, что в большинстве шаблонов есть места, где сайдбар не загружается в шаблоне. Например:
— при $noSidebar='true'
— когда sidebar.tpl инклудится взависимости от $sidebarPosition сверху или снизу контента.
Это не позволяет манипулировать сайдбаром с помощью js, например в плагине showhidesidebar.
На мой взгляд целеообразнее использовать CSS:
Нашел время и оформил на гитхабе. Если интересно, можете протестить у себя.
Кратко о работе: в форме регистрации, при нажатии кнопок в поле ввода логина запрашивается пара ключей. При получении заполненой формы ключи сверяются. Если пара неверна — выводит сообшение, что логин неверный. (так сделано, что бы заставить юзера нажимать кнопки в поле ввода логина).
не знаю зачем Вам эта глупость
быдлокод на коленке :)
classes/hooks/HookPostreadingtime.class.php
<?php
//===============================================================
class HookPostreadingtime extends Hook{
//===============================================================
public function RegisterHook(){
$this->AddHook('template_topic_show_info','inj_topic_show_info',__CLASS__);
}
//===============================================================
public function inj_topic_show_info($aVars){
$iReading=200;//google: Средняя скорость чтения 200-250 слов в минуту
$iWords=count(explode(' ',strip_tags($aVars['topic']->getText())));
$iMinutes=floor($iWords/$iReading);
$iSeconds=floor(($iWords%$iReading)/($iReading/60));
$sReturn=($iMinutes>0)?' '.$iMinutes.' мин.':'';
$sReturn.=($iSeconds>0)?' '.$iSeconds.' сек.':(($iMinutes>0)?'':' моментально.');
return '<li class="topic-info-date">Время прочтения: '.$sReturn.'</li>';
}
//===============================================================
}
?>
так, решил выбросить свой Text.class
1) скачиваем архив файла yadi.sk/d/IksoejdPZTdM9
2) распаковываем и забрасываем по пути /engine/modules/text
3) заменяем
теперь должно добавляться видео:
— с youtube следующего формата
$config['module']['user']['friend_notice']['delete'] = false; // Отправить talk-сообщение в случае удаления пользователя из друзей
$config['module']['user']['friend_notice']['accept'] = false; // Отправить talk-сообщение в случае одобрения заявки на добавление в друзья
$config['module']['user']['friend_notice']['reject'] = false; // Отправить talk-сообщение в случае отклонения заявки на добавление в друзья
По остальным: файлы topic_sm-preview_1.tpl и topic_sm-preview_2.tpl, находим
и
и балуемся с циферками 4 и 8 (в сумме всегда должно получаться 12).
ВЫборка топиков по фильтру $aFilter
Все пункты фильтра независимы, можете их располагать в любом порядке и в любом сочетании в зависимости от ваших хотелок.
Мой пример в комментариях выше будет выглядеть так
Чтобы работал редактор, надо инициализировать его в шаблоне, где он нужен:
Если не боитесь править движок
\classes\actions\ActionBlog.class.php
строки 88 и 95
$sOrder='blog_rating';
$sOrderWay='desc';
Исправляйте следуя пояснениям выше
Параметр order — по чему сортируем, может быть равен blog_id, blog_title, blog_rating, blog_count_user, blog_count_topic. Надеюсь понятно что за что отвечает.
Параметр order_way — как сортируем, asc — с наименьшего до максимального (по возрастанию), desc — с максимального к минамальному (по убыванию)
Если не боитесь править движок \classes\actions\ActionBlog.class.php
Предварительно создаем EventName в ActionProfile.class.php и представление в /templates/skin/имя шаблона/ActionProfile/имяэвента.tpl
Смотрим и радуемся.
Как вариант, можно сделать так:
В папке имаги у нас будет допустим 15 изображений с именами с 1 до 15, с одинаковым расширением .png (или любое другое).
Если это для фона, то само собой делаете типа:
Например для шаблонаdeveloper-kit by vOFFka
Практически данные классы меняют местами колонки.
Соответственно, из CSS можно убрать незадействованные классы (content-right, content-profile и т.п.).
Также для удобства настроек я сделал следующее:
— убрал со всех шаблонов переменную {assign var=«sidebarPosition» value='left'}
— в конфиг добавил
— в header.tpl и sidebar.tpl добавил
Решение менее гибкое (экшены целиком), но удобное.
Обратил внимание, что в большинстве шаблонов есть места, где сайдбар не загружается в шаблоне. Например:
— при $noSidebar='true'
— когда sidebar.tpl инклудится взависимости от $sidebarPosition сверху или снизу контента.
Это не позволяет манипулировать сайдбаром с помощью js, например в плагине showhidesidebar.
На мой взгляд целеообразнее использовать CSS:
P.S.: Хотел добавить в топик, но нет возможности редактирования. Наверное, потому что в нем постовой…
Кратко о работе: в форме регистрации, при нажатии кнопок в поле ввода логина запрашивается пара ключей. При получении заполненой формы ключи сверяются. Если пара неверна — выводит сообшение, что логин неверный. (так сделано, что бы заставить юзера нажимать кнопки в поле ввода логина).
Содержимое файла HookSimilar.class.php плагина меняем на:
быдлокод на коленке :)
classes/hooks/HookPostreadingtime.class.php
И по традиции выше описанное не проверялось
github.com/livestreet/livestreet/blob/1.0.3/classes/modules/topic/Topic.class.php#L576
Решил остановиться на select2 — ivaynberg.github.io/select2/
Это более улучшенный клон Chosen.
Ставится довольно легко — прописывается 2 js-срипта в хедере и в шаблоне задается id селекта:
1) скачиваем архив файла yadi.sk/d/IksoejdPZTdM9
2) распаковываем и забрасываем по пути /engine/modules/text
3) заменяем
теперь должно добавляться видео:
— с youtube следующего формата
(ссылку берем под видео во вкладке _поделится_)
— с vk.com следующего формата
(ссылку берем под видео во вкладке _поделится_экспорт видеозаписи)
не забываем на всякий случай сделать копию своего файла Text.class
коммиты от Feb 20, 2014