Дополнительное поле при создании топика
Здравствуйте, довольно актуальная тема на 0.5.x
Сразу хочу сказать спасибо:
bas eXtravert bamboo
Источники: HOWTO: Дополнительные поля при создании топика — подправил адреса к файлам + добавил русского языка
Цель:
В файле: templates/skin/new/actions/ActionTopic/add.tpl
после:
вставить:
В файле: classes/modules/topic/entity/Topic.entity.class.php
в любое понравившееся (в пределах класса) место вставляем:
пример:

В файле: classes/actions/ActionTopic.class.php
после строчки (ориентировочно 166 строка)
вставляем строчку
далее после строки (встречается два раза — примерно 384 и 537 строки)
вставляем
В файле: templates/skin/new/topic_topic.tpl
вставляем
Осталось подправить файл templates/language/russian.php
в группу /**
* Создание топика
*/
добавить

Все. Должно работать, как часы)
Если вы хотите, чтобы дополнительное поле было видно только администраторам:
«обогнем» в файле: templates/skin/new/topic_topic.tpl
в
Пример:

Теперь ваше дополнительное поле видно только администраторам.
За помощь в решении спасибо: bamboo
Работа дополнительного поля
при создании и редактировании топика:

как видит дополнительное поле Администратор:

как видит дополнительное поле пользователь ;)

Таким образом, используя информацию в данном топике — можно очень быстро добавить на LS дополнительное поле. При желании скрыть его от общего обозрения.
Спасибо за внимание.
Дополнительное поле при создание топика
Сразу хочу сказать спасибо:
bas eXtravert bamboo
Источники: HOWTO: Дополнительные поля при создании топика — подправил адреса к файлам + добавил русского языка
Цель:
- Часть I создание дополнительного поля в шаблоне new под 0.5.1
- Часть II опубликованное дополнительное поле видно только администраторам
Часть I
В файле: templates/skin/new/actions/ActionTopic/add.tpl
после:
<p><label for="topic_tags">{$aLang.topic_create_tags}:</label><br />
<input type="text" id="topic_tags" name="topic_tags" value="{$_aRequest.topic_tags}" class="w100p" /><br />
<span class="form_note">{$aLang.topic_create_tags_notice}</span></p>
вставить:
<p><label for="topic_somecontent">{$aLang.topic_create_file_url}:</label><br />
<input type="text" id="topic_somecontent" name="topic_somecontent" value="{$_aRequest.topic_somecontent}" class="w100p" /></span></p>
В файле: classes/modules/topic/entity/Topic.entity.class.php
в любое понравившееся (в пределах класса) место вставляем:
public function getSomeContent() {
$this->extractExtra();
if (isset($this->aExtra['some_content'])) {
$somecontent=$this->aExtra['some_content'];
return $somecontent;
}
return null;
}
public function setSomeContent($data) {
$this->extractExtra();
$this->aExtra['some_content']=$data;
$this->setExtra($this->aExtra);
}
пример:

В файле: classes/actions/ActionTopic.class.php
после строчки (ориентировочно 166 строка)
$_REQUEST['topic_forbid_comment']=$oTopic->getForbidComment();
вставляем строчку
$_REQUEST['topic_somecontent']=$oTopic->getSomeContent();
далее после строки (встречается два раза — примерно 384 и 537 строки)
$oTopic->$oTopic->setTextHash(md5(getRequest('topic_text')));
вставляем
$oTopic->setSomeContent(getRequest('topic_somecontent'));
В файле: templates/skin/new/topic_topic.tpl
{$oTopic->getText()}
</div>
вставляем
{$aLang.topic_create_file_url_echo}: <a href="{$oTopic->getSomeContent()}" target="_blank">{$oTopic->getSomeContent()}</a>
Осталось подправить файл templates/language/russian.php
в группу /**
* Создание топика
*/
добавить
'topic_create_file_url' => 'Ссылка на файл (видна только администраторам)',
'topic_create_file_url_echo' => 'Ссылка на файл',

Все. Должно работать, как часы)
Часть II
Приступаем ко второй части (опубликованное дополнительное поле видно только администраторам)Если вы хотите, чтобы дополнительное поле было видно только администраторам:
«обогнем» в файле: templates/skin/new/topic_topic.tpl
{$aLang.topic_create_file_url_echo}: <a href="{$oTopic->getSomeContent()}" target="_blank">{$oTopic->getSomeContent()}</a>
в
{if $oUserCurrent and $oUserCurrent->isAdministrator()}
...
{/if}
Пример:

Теперь ваше дополнительное поле видно только администраторам.
За помощь в решении спасибо: bamboo
Работа дополнительного поля
при создании и редактировании топика:

как видит дополнительное поле Администратор:

как видит дополнительное поле пользователь ;)

Таким образом, используя информацию в данном топике — можно очень быстро добавить на LS дополнительное поле. При желании скрыть его от общего обозрения.
Спасибо за внимание.
21 комментарий
templates/skin/new/topic_topic.tpl
Будет выглядеть:
Вечный двигатель: http://livestreet.ru
Я задавал вот такой вопрос на хабре
Никто там не ответил.
Почему вы храните доп. поле в extra?
Я думаю, что лучше добавить отдельную таблицу(что-то вроде topic_optional) и в ней уже хранить произвольные поля.
Сейчас пробую реализовать.
Потом, может быть выкачу плагин.
в extra можно хранить данные в виде массива
пример:
ксли поле заполнено, то показывать источник: что написали, а если нет, то ваш сайт. хелп!
Ищу заказы на верстку 0.5.1 шаблонов.
Но, остался момент если нажать РЕДАКТИРОВАТЬ, то придется вставлять данные поля по новой или они будут просто пустые. Помогите решить проблему с редактированием топиков.
есть мануал не для 0.5?