Делаем Голос, как на Хабре!
Всем привет, не хватет кармы для постинга в нужный форум, просьба накинуть.
Решил выложить свой способ создания «Голоса» (Хабр ).
Приступим:
1. Создаем новый коллективный блог(Голос), узнаем его ID (blog_id) в таблице prefix_blog в базе данных
2. Добавляем новый тип поста, как указаннотут , при чем ссылка и идентификатор поста должны быть «voice» (используется далее по тексту)
В шаблоне add.tpl нового вида поста (/templates/skin/new/actions/ActionVoice/) необходимо заменить поле select выбора блога на поле
Либо берем полностью готовы код файла /templates/skin/new/actions/ActionVoice/add.tpl
В нем убраны не нужные поля, только текст Голоса. Установленн запрет комментирования и принудительный вывод на главную.
3. Убираем блог из списка блогов при написании различных типов постов. Идем в classes/modules/blog/mapper/Blog.mapper.class.php везде после
добавляем
*id вашего блога заменить на реальный id.
Это же спрячет блог в рейтинге блогов.
4. Далее нужно спрятать вывод информации о постах в прямом эфире. Идем в templates/skin/new/block.stream_topic.tpl
после
добавляем
и перед
Добавляем
Теперь выводятся только посты не являющиеся Голосом
5.Настраиваем внешний вид поста-голоса.
В файлах
templates/skin/new/topic.tpl
templates/skin/new/topic_list.tpl
Можно скрыть не нужные элементы для типа постов Голос
Для этого ненужные элементы помещаем между:
Далее убираем ненужные элементы в отображении самого блога Голос.
Для этого идем в файлы:
templates/skin/new/actions/ActionBlog/blog.tpl
и не нужные элементы обралмяем в
Если установлен модуль поддоментов так же нужно выполнить это в файле /templates/skin/new/actions/ActionSubdomain/blog.tpl
Далее отключаем вывод комментанриев в блоге голос:
Идем в templates/skin/new/actions/ActionBlog/comment.tpl
Обрамляем все содержимое файла в
Вот как это выглядиту нас :
Так же мы сделали принудительный вывод на главную, запрет комментирования по умолчанию заменой соответсвующих чекбоксов на хидден поля в форме add.tpl
Решил выложить свой способ создания «Голоса» (
Приступим:
1. Создаем новый коллективный блог(Голос), узнаем его ID (blog_id) в таблице prefix_blog в базе данных
2. Добавляем новый тип поста, как указанно
В шаблоне add.tpl нового вида поста (/templates/skin/new/actions/ActionVoice/) необходимо заменить поле select выбора блога на поле
<input type="hidden" name="blog_id" id="blog_id" value="ТУТ_ID_ВАШЕГО_БЛОГА_ГОЛОС">
Либо берем полностью готовы код файла /templates/skin/new/actions/ActionVoice/add.tpl
В нем убраны не нужные поля, только текст Голоса. Установленн запрет комментирования и принудительный вывод на главную.
{include file='header.tpl' menu='topic_action' showWhiteBack=true}
{literal}
<script language="JavaScript" type="text/javascript">
document.addEvent('domready', function() {
new Autocompleter.Request.HTML($('topic_tags'), SERVER_WEB_ROOT+'/include/ajax/tagAutocompleter.php', {
'indicatorClass': 'autocompleter-loading', // class added to the input during request
'minLength': 2, // We need at least 1 character
'selectMode': 'pick', // Instant completion
'multiple': true // Tag support, by default comma separated
});
});
</script>
{/literal}
{if $BLOG_USE_TINYMCE}
<script type="text/javascript" src="{$SERVER_WEB_ROOT}/classes/lib/external/tiny_mce/tiny_mce.js"></script>
{literal}
<script type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "lshselect,bold,italic,underline,strikethrough,|,bullist,numlist,|,undo,redo,|,lslink,unlink,lsvideo,lsimage,pagebreak,code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
theme_advanced_resize_horizontal : 0,
theme_advanced_resizing_use_cookie : 0,
theme_advanced_path : false,
object_resizing : true,
force_br_newlines : true,
forced_root_block : '', // Needed for 3.x
force_p_newlines : false,
plugins : "lslink,lsimage,lsvideo,safari,inlinepopups,media,lshselect,pagebreak",
convert_urls : false,
extended_valid_elements : "embed[src|type|allowscriptaccess|allowfullscreen|width|height]",
pagebreak_separator :"<cut>"
});
</script>
{/literal}
{else}
{include file='window_load_img.tpl' sToLoad='topic_text'}
{/if}
<div class="topic" style="display: none;">
<div class="content" id="text_preview"></div>
</div>
<div class="profile-user">
{if $sEvent=='add'}
<h1>{$aLang.topic_voice_create}</h1>
{else}
<h1>{$aLang.topic_voice_edit}</h1>
{/if}
<form action="" method="POST" enctype="multipart/form-data" onSubmit="ajaxBlogInfo(211);">
<input type="hidden" name="blog_id" id="blog_id" value="211">
<script language="JavaScript" type="text/javascript">
ajaxBlogInfo($('blog_id').value);
</script>
<input type="hidden" id="topic_title" name="topic_title" value="voice" class="w100p" /><br />
<p>{if !$BLOG_USE_TINYMCE}<div class="note">{$aLang.topic_create_text_notice}</div>{/if}<label for="topic_text">{$aLang.topic_create_text}:</label>
{if !$BLOG_USE_TINYMCE}
<div class="panel_form" style="background: #eaecea; ">
<a href="#" onclick="lsPanel.putTagAround('topic_text','b'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/bold_ru.gif" width="20" height="20" title="{$aLang.panel_b}"></a>
<a href="#" onclick="lsPanel.putTagAround('topic_text','i'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/italic_ru.gif" width="20" height="20" title="{$aLang.panel_i}"></a>
<a href="#" onclick="lsPanel.putTagAround('topic_text','u'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/underline_ru.gif" width="20" height="20" title="{$aLang.panel_u}"></a>
<a href="#" onclick="lsPanel.putTagAround('topic_text','s'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/strikethrough.gif" width="20" height="20" title="{$aLang.panel_s}"></a>
<a href="#" onclick="lsPanel.putTagUrl('topic_text','{$aLang.panel_url_promt}'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/link.gif" width="20" height="20" title="{$aLang.panel_url}"></a>
<a href="#" onclick="lsPanel.putQuote('topic_text'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/quote.gif" width="20" height="20" title="{$aLang.panel_quote}"></a>
<a href="#" onclick="lsPanel.putTagAround('topic_text','code'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/code.gif" width="30" height="20" title="{$aLang.panel_code}"></a>
<a href="#" onclick="lsPanel.putTagAround('topic_text','video'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/video.gif" width="20" height="20" title="{$aLang.panel_video}"></a>
<a href="#" onclick="showImgUploadForm(); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/img.gif" width="20" height="20" title="{$aLang.panel_image}"></a>
<a href="#" onclick="lsPanel.putText('topic_text','<cut>'); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/cut.gif" width="20" height="20" title="{$aLang.panel_cut}"></a>
<a href="#" onclick="showUserForm(); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/user.png" width="16" height="16" title="{$aLang.panel_user}"></a>
</div>
{/if}
<textarea name="topic_text" id="topic_text" rows="20">{$_aRequest.topic_text}</textarea></p>
<input type="hidden" id="topic_tags" name="topic_tags" value="голос" class="w100p" /><br />
<input type="hidden" id="topic_forbid_comment" name="topic_forbid_comment" value="1" />
<input type="hidden" id="topic_publish_index" name="topic_publish_index" value="1" />
<p class="buttons">
<input type="submit" name="submit_topic_publish" value="{$aLang.topic_create_submit_publish}" class="right" />
<input type="submit" name="submit_preview" value="{$aLang.topic_create_submit_preview}" onclick="$('text_preview').getParent('div').setStyle('display','block'); ajaxTextPreview('topic_text',false); return false;" />
<input type="submit" name="submit_topic_save" value="{$aLang.topic_create_submit_save}" />
</p>
</form>
</div>
{include file='window_add_user.tpl' sToLoad='topic_text'}
{include file='footer.tpl'}
3. Убираем блог из списка блогов при написании различных типов постов. Идем в classes/modules/blog/mapper/Blog.mapper.class.php везде после
b.blog_type<>'personal'
добавляем
AND
b.blog_id<>'id вашего блога'
*id вашего блога заменить на реальный id.
Это же спрячет блог в рейтинге блогов.
4. Далее нужно спрятать вывод информации о постах в прямом эфире. Идем в templates/skin/new/block.stream_topic.tpl
после
{foreach from=$oTopics item=oTopic name="cmt"}
добавляем
{if $oTopic->getType()!='voice'}
и перед
{/foreach}
Добавляем
{/if}
Теперь выводятся только посты не являющиеся Голосом
5.Настраиваем внешний вид поста-голоса.
В файлах
templates/skin/new/topic.tpl
templates/skin/new/topic_list.tpl
Можно скрыть не нужные элементы для типа постов Голос
Для этого ненужные элементы помещаем между:
{if $oTopic->getType()!='voice'}
и
{/if}
Далее убираем ненужные элементы в отображении самого блога Голос.
Для этого идем в файлы:
templates/skin/new/actions/ActionBlog/blog.tpl
и не нужные элементы обралмяем в
{if $oBlog->getUrl()!='voice'}
и
{/if}
Если установлен модуль поддоментов так же нужно выполнить это в файле /templates/skin/new/actions/ActionSubdomain/blog.tpl
Далее отключаем вывод комментанриев в блоге голос:
Идем в templates/skin/new/actions/ActionBlog/comment.tpl
Обрамляем все содержимое файла в
{if $oTopic->getType()!='voice'}
и
{/if}
Вот как это выглядит
Так же мы сделали принудительный вывод на главную, запрет комментирования по умолчанию заменой соответсвующих чекбоксов на хидден поля в форме add.tpl
6 комментариев
Не хватало, говорите?