Закрепление топика
1. Сделать запрос в базу (для создания новой строки topic_main)
2. Открыть файл classes/modules/topic/entity/Topic.entity.class.php
а) После:
б) В самом конце, перед
3. Открыть файл classes/modules/topic/mapper/Topic.mapper.class.php
а) на 375й строке заменить
б) на 416й строке заменить
в) на 455й строке заменить
г) заменить старый UpdateTopic на:
д) Заменить старый AddTopic на:
4. Открыть файл templates/skin/нужныйшаблон/actions/ActionTopic/add.tpl
После:
Добавить:
5. Открыть файл classes/actions/ActionTopic.class.php
а) После:
Добавить:
б) После:
Добавить:
в) После:
Добавить:
6. Отчистить папку Compiled и радоваться !
Огромное спасибо randomtoy за помощь в добавлении кнопки! :)
ALTER TABLE prefix_topic ADD topic_main tinyint(1) default '0'
2. Открыть файл classes/modules/topic/entity/Topic.entity.class.php
а) После:
public function getTitle() {
return $this->_aData['topic_title'];
}
Добавить:public function getMain() {
return $this->_aData['topic_main'];
}
б) В самом конце, перед
}
?>
Добавить:public function setMain($data) {
$this->_aData['topic_main']=$data;
}
3. Открыть файл classes/modules/topic/mapper/Topic.mapper.class.php
а) на 375й строке заменить
ORDER by t.topic_date_add desc
На:ORDER by topic_main desc, t.topic_date_add desc
б) на 416й строке заменить
ORDER by t.topic_date_add desc
На:ORDER by topic_main desc, t.topic_date_add desc
в) на 455й строке заменить
order by t_fast.topic_date_add desc
На:order by topic_main desc, t_fast.topic_date_add desc
г) заменить старый UpdateTopic на:
public function UpdateTopic(TopicEntity_Topic $oTopic) {
$sql = "UPDATE ".DB_TABLE_TOPIC."
SET
blog_id= ?d,
topic_title= ?,
topic_tags= ?,
topic_date_add = ?,
topic_date_edit = ?,
topic_user_ip= ?,
topic_publish= ?d ,
topic_publish_draft= ?d ,
topic_publish_index= ?d,
topic_rating= ?f,
topic_count_vote= ?d,
topic_count_read= ?d,
topic_count_comment= ?d,
topic_cut_text = ? ,
topic_forbid_comment = ? ,
topic_text_hash = ?,
topic_main = ?d
WHERE
topic_id = ?d
";
if ($this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getTitle(),$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getDateEdit(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getRating(),$oTopic->getCountVote(),$oTopic->getCountRead(),$oTopic->getCountComment(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash(),$oTopic->getMain(),$oTopic->getId())) {
$this->UpdateTopicContent($oTopic);
return true;
}
return false;
}
д) Заменить старый AddTopic на:
public function AddTopic(TopicEntity_Topic $oTopic) {
$sql = "INSERT INTO ".DB_TABLE_TOPIC."
(blog_id,
user_id,
topic_type,
topic_title,
topic_tags,
topic_date_add,
topic_user_ip,
topic_publish,
topic_publish_draft,
topic_publish_index,
topic_cut_text,
topic_forbid_comment,
topic_text_hash,
topic_main
)
VALUES(?d, ?d, ?, ?, ?, ?, ?, ?d, ?d, ?d, ?, ?, ?, ?d)
";
if ($iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$oTopic->getType(),$oTopic->getTitle(),
$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash(),$oTopic->getMain()))
{
$oTopic->setId($iId);
$this->AddTopicContent($oTopic);
return $iId;
}
return false;
}
4. Открыть файл templates/skin/нужныйшаблон/actions/ActionTopic/add.tpl
После:
<p><label for="topic_publish_index"><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="input-checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if} />
— {$aLang.topic_create_publish_index}</label>
<span class="form-note">{$aLang.topic_create_publish_index_notice}</span></p>
Добавить:
{if $oUserCurrent->isAdministrator()}
<p><label for="topic_main"><input type="checkbox" id="topic_main" name="topic_main" class="input-checkbox" value="1" {if $_aRequest.topic_main==1}checked{/if} />
—Закрепить</label>
<span class="form-note">Закрепить</span></p>
{/if}
5. Открыть файл classes/actions/ActionTopic.class.php
а) После:
/**
* Принудительный вывод на главную
*/
$oTopic->setPublishIndex(0);
if ($this->oUserCurrent->isAdministrator()) {
if (getRequest('topic_publish_index')) {
$oTopic->setPublishIndex(1);
}
}
Добавить:
/**
* Закрепляем
*/
$oTopic->setMain(0);
if ($this->oUserCurrent->isAdministrator()) {
if (getRequest('topic_main')) {
$oTopic->setMain(1);
}
}
б) После:
/**
* Принудительный вывод на главную
*/
if ($this->oUserCurrent->isAdministrator()) {
if (getRequest('topic_publish')) {
$oTopic->setPublishIndex(1);
} else {
$oTopic->setPublishIndex(0);
}
}
Добавить:
/**
* Закреплен ли?
*/
if ($this->oUserCurrent->isAdministrator()) {
if (getRequest('topic_main')) {
$oTopic->setMain(1);
} else {
$oTopic->setMain(0);
}
}
в) После:
$_REQUEST['topic_forbid_comment']=$oTopic->getForbidComment();
Добавить:
$_REQUEST['topic_main']=$oTopic->getMain();
6. Отчистить папку Compiled и радоваться !
Огромное спасибо randomtoy за помощь в добавлении кнопки! :)
23 комментария
после
добавить
файл /classes/actions/ActionTopic.class.php
после
добавить
после
добавить
после
добавить
чистим папку компилед, получаем профит
и AddTopic типа такого
в топе
выше всех
вверху
наверху
В css добавляете topicmain и редактируете как нужно. Я например делал рамку. Добавлял три таких div'a с разными id.
но столько правок — перебор, имхо