Кнопка "Добавить пост" при просмотре блога




Добрый день ув. Сообщество!
Сегодня я бы хотел рассказать о небольшой «фиче», которую можно легко добавить к себе на сайт под управлением LS. Фича заключачается в следующем — при просмотре блога появится ссылка, при нажатии на которую, пользователь будет публиковать сразу в этот блог (присоединен он к блогу или нет).
Фича подходит для сайтов с большим кол-вом блогов, чтобы пользователи не мучались, листая выпадающий список с большим кол-вом блогов, да и вообще, по-моему, такая структура более понятна обычным пользователям.

Итак, что же делаем:
1) Ставим плагин "Blog Autoconnect" — теперь нам доступны все блоги для публикации (кроме закрытых блогов, конечно).
2) Ставим плагин "Отключение персональных блогов" — по сути, они уже не нужны будут, как мне кажется, но это опционально.
3) Открываем файл /templates/skin/ВАШ_ШАБЛОН/actions/ActionBlog/blog.tpl и добавляем в удобное нам место следующее:
{if $oUserCurrent}
	{if ($oBlog->getType()!='close' and $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and $oBlog->getUserIsJoin()) or ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
		<a href="{router page='topic'}add/?blog_id={$oBlog->getId()}" class="edit delite_blog">Добавить своё</a>
	{elseif $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oBlog->getUserIsJoin() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
		<a href="{router page='topic'}add/?blog_id={$oBlog->getId()}" class="edit delite_blog">Добавить своё</a>
	{else}
		<b>Внимание, </b>вы пока не можете публиковаться в данном блоге.
Возможные причины: это закрытый блог или у вас недостаточно кармы (требуется как минимум <b>{$oBlog->getLimitRatingTopic()}</b>), либо вы просто не присоединились к нему. <b>Попробуйте присоединится</b> к блогу и перезагрузить страницу.
	{/if}
{else}
        <a href="{router page='login'}">Добавить своё</a>
{/if}
и сохраняем файл в UTF-8 без BOM.

Проверка идет на все варианты возможности писать в определенный блог или нет (авторизация, рейтинг, закрытый блог, администрация и создатель блога могут добавлять не смотря на рейтинг, администрация сайта может добавлять во все блоги). Так же спасибо Chiliec за условие с рейтингом и что убрал лишнюю проверку.

С ув. Frankenstein
Источник

31 комментарий

avatar
Ты сделал мой день!
avatar
Я сделал как написано и нечего не произошло. А куда именно это нужно вставить. Пробовал в несколько мест не получилось. Шаблон Social.
avatar
Если говорить о шаблоне Social — файл тот же /templates/skin/social-jquery/actions/ActionBlog/blog.tpl после
<ul class="blog-actions">
вставить
<li>
{if $oUserCurrent}
        {if $oBlog->getType()!='close'}
                <a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
        {elseif $oUserCurrent and ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oBlog->getUserIsJoin())}
                <a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
        {else}
                Чтобы добавить материал в закрытый блог, сначала нужно в него вступить
        {/if}
{/if}
</li>

Файл сохранить в кодировке UTF-8 без BOM. Все заработает, при условии, что данный шаблон не подменяется другим из плагина какого-нибудь.
avatar
Спасибо. Всегда выручаешь.
avatar
Нет. Всё таки не получилось.
Вот список плагинов.
aceAdminPanel: v.1.5.271 — Ok
aceMySearch: v.1.5.121
User's Adsense: v.0.1.0
Blogs Autoconnect Plugin: v.1.0.0
Chat light: v.0.2.1
Отключение персональных блогов: v.1.0.0
Extended city: v.2.0.0
Language changer: v.1.1.1
LsPage: v.1.3
Minecraft Status: v.1.0.0
No IE: v.1.0.0
Static page: v.1.3.2
Фотолинк: v.1.0
Публикация от имени: v.0.1
Remember me: v.1.2
Role: v.0.4
Search Auto Completer for LS 0.5+: v.1.1.4
SEO: v.0.1
ShowVotes: v.0.2
Spoiler Plugin: v.1.0.3
Template Social: v.2.0
Topic signature: v.1.0.1
Twitter Feed: v.1.1.3
usersearch: v.1.0
Use Watermark: v.0.2.0
Livestreet Wall: v.0.1
avatar
Давай от противного: В том же файле добавь после
<ul class="blog-actions">
это
<li>TEST</li>
Если надпись выйдет, значит файл тот. Из списка плагинов вроде ни один из них не подменят этот файл.
avatar
Неа. Ничего.
avatar
Я честно не знаю какой плагин подменяет) Попробуй просмотреть плагины и найти там подменяющий файл. Другого посоветовать не могу. Может кто знает, сейчас напишет в комментах.
avatar
Надеюсь, вы результат смотрели на странице site.ru/blog/blogname/ а не на site.ru/blogs/
avatar
Я что так сильно похож на дурочка?='( Сейчас у меня уже ночь и я делать не чего уже не буду. Завтра посмотрим. Да и с iPad 2 писать не удобно.
avatar
Не только дурачки спотыкаются на элементарных вещах, это частенько происходит и с умными людьми. Как говорится, «и на старуху бывает проруха».
Кроме того, это по-моему уже ваш третий комментарий про айпад 2, который я видел. Я не случайно выделил цифру 2. Этим вы подчеркиваете, что хотите обратить внимание, похвастаться. Но хвастаться здесь нечем — вы ведь купили его не на свои деньги, а выпросили у мамы, так ведь? Да ладно, что это я вас здесь учу… когда-нибудь сами всё поймете…
avatar
Пока писал с iPad 2, то я писал по делу. Вы повнимательней читайте). iPad не мой, а отца. Он ему нужен для работы.
avatar
Я бы ничего не сказал если бы это настолько сильно не мозолило глаза.
Чем принципиально в отображении контента различаются айпад 1,2 и 3?
avatar
На iPad 2 экран не Ретина. На нём не очень удобно посещать сайты. На The new iPad — Экран Ретина, но пока в России его нет я не знаю какой из них лучше. На iPod touch 4G на сайте писать комментарии совершенно не возможно.
avatar
я бы начал с Role
avatar
Поясните пожалуйста смысл второй проверки в elseif $oUserCurrent, если мы изначально вошли в это условие.
Я бы вот как-то так сделал (здесь присутствует проверка по рейтингу):
{if $oUserCurrent}
        {if $oBlog->getType()!='close' and $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic()}
                <a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
        {elseif $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oBlog->getUserIsJoin())}
                <a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
        {else}
                Это закрытый блог или у вас недостаточно кармы (требуется как минимум {$oBlog->getLimitRatingTopic()}).
        {/if}
{/if}
avatar
Да, получилась лишняя проверка. Большое спасибо за пример с рейтингом. Но кое-что решил дописать — дело в том, что если владелец блога тоже имеет рейтинг ниже, чем он указал в настройках блога, то он тоже не может в него писать, так же и администраторы сайта не могли. Вот такой вот вариант:
{if $oUserCurrent}
	{if ($oBlog->getType()!='close' and $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic()) or ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
		<a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
	{elseif $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oBlog->getUserIsJoin() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
		<a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
	{else}
		Это закрытый блог или у вас недостаточно кармы (требуется как минимум {$oBlog->getLimitRatingTopic()})
	{/if}
{/if}
avatar
может это в топик добавить?
avatar
Добавил сразу после того, как коммент написал)
avatar
Неподскажите шаблоне Simple куда код установить?
avatar
Я в simple вставил сюда, находишь такой код в файле .../..../.../blog.tpl
<ul class="actions">

		{if $oUserCurrent and $oUserCurrent->getId()!=$oBlog->getOwnerId()}
			<li><div onclick="ls.blog.toggleJoin(this,{$oBlog->getId()}); return false;" class="join {if $oBlog->getUserIsJoin()}active{/if}"></div></li>
  
		{/if}


И после него вставляешь такой код:

<li>  <div class="button2">
                         <em></em><span></span>
            
       {if $oUserCurrent}
        {if ($oBlog->getType()!='close' and $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic()) or ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
                <a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
        {elseif $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oBlog->getUserIsJoin() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
                <a href="{router page='topic'}add/?blog_id={$oBlog->getId()}">Добавить своё</a>
        {else}
                Это закрытый блог или у вас недостаточно кармы (требуется как минимум {$oBlog->getLimitRatingTopic()})
        {/if}
{/if}



</div>   </li>


Правда немного кривовато получилось, для админа кнопки выглядят так



Для юзеров выглядит так



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

{if $oUserCurrent}
....
{else}
 <a href="{router page='login'} ">Добавить своё</a>
{/if}

так, при нажатии на кнопку «Добавить своё», гость будет отправлен на страницу логина.
avatar
Хорошее предложение, добавил в пост, спасибо.
avatar
подскажите как убрать тысячные в требующемся рейтинге? :) а то цифра например 10.000 смущает пользователей, было бы хорошо например 10 просто :)

спасибо!
avatar
Подскажите пожалуйста, а как вывести список созданных блогов?
Через какую переменную? Хочу сделать блок в профиле со всеми созданными блогами пользователя
avatar
{if $aBlogAdministrators}
{foreach from=$aBlogAdministrators item=oBlogUser name=blog_user}
{assign var=«oBlog» value=$oBlogUser->getBlog()}
{$oBlog->getTitle()|escape:'html'}
{/foreach}

{/if}
avatar
{if $aBlogAdministrators}
		<tr>
			<td class="cell-label">{$aLang.profile_blogs_administration}:</td>
			<td>
				{foreach from=$aBlogAdministrators item=oBlogUser name=blog_user}
					{assign var="oBlog" value=$oBlogUser->getBlog()}
					<div style="margin-bottom:3px; float:left;"><a href="{$oBlog->getUrlFull()}" style="margin-right:15px;"><span style="text-decoration:none;margin-right:4px;"><i class="icon-edit"></i></span>{$oBlog->getTitle()|escape:'html'}</a></div>
				{/foreach}
			</td>
		</tr>
	{/if}
avatar
Спасибо большое! Выручаете не в первый раз!
avatar
Обновил немного условие, добавил дополнительную проверку.
avatar
Сделал всё как описано (кроме п. 2).

В результате — Внимание, вы пока не можете публиковаться в данном блоге. Возможные причины: это закрытый блог или у вас недостаточно кармы (требуется как минимум 0.000), либо вы просто не присоединились к нему. Попробуйте присоединится к блогу и перезагрузить страницу.

Если присоединиться к Блогу — всё ок.

Версия LS — последняя стабильная.
Шаблон — Сунь и ОО!
avatar
Отвечаю сам себе:
Код заменить на:

{if $oUserCurrent}
	{if ($oBlog->getType()!='close' and $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and $oBlog->getUserIsJoin()) or ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
		<a href="{router page='topic'}add/?blog_id={$oBlog->getId()}" class="edit delite_blog">Добавить своё</a>
	{else $oUserCurrent->getRating()>=$oBlog->getLimitRatingTopic() and ($oUserCurrent->getId()==$oBlog->getOwnerId() or $oBlog->getUserIsJoin() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator())}
		<a href="{router page='topic'}add/?blog_id={$oBlog->getId()}" class="edit delite_blog">Добавить своё</a>
		{/if}
{else}
        <a href="{router page='login'}">Добавить своё</a>
{/if}
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.