Очень часто нас спрашивают или просят сделать изменения в движке интернет магазина ВебАсист в области модуля новостей/блога. Если быть еще точнее, просят сделать изменения в чпу адресе. Не будем долго расписывать, тем более кто завершил создание интернет магазина давно, уже в курсе о чем идет речь. Приступаем сразу.
ВНИМАНИЕ перед работой обязательно!!! Просто обязательно сделайте резервную копию файлов.
Итак, сразу отвечаем на вопрос:
Как сделать ЧПУ новостей в транслите?
Для начала открываем базу данных и создаем там новое поле в таблице SC_news_table, в нашем примере это поле мы назовем link_slug. При создании нового поля мы использовали тип varchar с параметром 75. После того как мы создали поле можно смело закрывать базу данных.
Переходим к программной части
Открываем файл public_html/published/SC/html/scripts/modules/news/class.newsmodule.php
В нем находим строчку которая начинает запрос так
case 'SAVE_NEWS':
if(isset($_POST['DATA'])){
и в этот запрос, перед строкой $this->saveNews($_POST); аккуратно вписываем вот такой код, чтобы получилось
if(!isset($_POST['link_slug'])||trim($_POST['link_slug'])==''){
$cur_lang = LanguagesManager::getCurrentLanguage();
$_POST['link_slug'] = make_slug($_POST['title_'.$cur_lang->iso2]);
}else $_POST['link_slug'] = make_slug($_POST['link_slug']);$this->saveNews($_POST);
Чуть ниже идет блок
case 'ADD_NEWS':
if(!$_POST['DATA']['title'] && !$_POST['DATA']['textToPublication']){
в него мы перед строкой Redirect(set_query('?ukey=manage_news&msg=add_ok')); добавляем код
if(!isset($_POST['link_slug'])||trim($_POST['link_slug'])==''){
$cur_lang = LanguagesManager::getCurrentLanguage();
$_POST['link_slug'] = make_slug($_POST['title_'.$cur_lang->iso2]);
}else $_POST['link_slug'] = make_slug($_POST['link_slug']);
Сохраняем файл и закачиваем его на сервер к остальным файлам сайта.
Теперь нам необходимо вывести поле в панели администратора. То есть переходим к следующему шагу.
Добавляем поле на странице добавления/редактирования новости.
Открываем папку с шаблоном backend, которая находится на сервере. В папке находим файлы: news.backend.html и news_add.html
Открываем их, в любой последовательности, можно хоть оба сразу.
В нашем примере мы откроем сначала файл news.backend.html (или news.admin_list.tpl.html зависит от версиии). Итак, в нем ищем блок
<tr>
<td>{"blog_post_title"|translate} <span class="notice">({"blog_str_not_html"|translate})</span>:</td>
<td>
{html_text name="title" values=$NewsInfo}
</td>
</tr>
После которого нам необходимо вставлить новый дополнительный блок для нашего поле с ЧПУ, и ставим наш блок с вот с таким кодом
<tr>
<td>links:</td>
<td>
<input type=text name='link_slug' value="{if $NewsInfo.link_slug}{$NewsInfo.link_slug}{else}{/if}" size="12" />
</td>
</tr>
Сохраняем и переходим к следующему файлу news_add.html, в нем так же нам необходимо найти блок с кодом
<tr>
<td>{"blog_postdate"|translate}:
</td>
<td>
{if $NewsInfo.add_date}{$NewsInfo.add_date}{else}{$current_date}{/if}
</td>
</tr>
После добавляем наш код
<tr>
<td> links:</td>
<td>
<input type=text name='link_slug' value="{if $NewsInfo.link_slug}{$NewsInfo.link_slug}{else}{/if}" size="12" />
</td>
</tr>
Сохраняем. Оба измененных файла закачиваем обратно на сервер к остальным файлам.
Отметим, что наши строки можно вставлять в удобное для вас место, в нашем случае, строка появится после даты.
Переходим к видимой части для пользователя.
Далее идем в папку с дизайном (frontend), копируем, открываем файл с шаблоном новостей и меняем вид ссылки на такой вот вид
{"?ukey=blog&blog_id="|cat:$news_posts[i].link_slug|set_query_html}
Сохраняем, закачиваем обратно на сервер.
Заходим создаем новую новость, проверяем.
Теперь должно работать.
Как настроить ЧПУ у старых новостей?
Для этого открываем панель администратора, заходим в раздел новости/блог, нажимаем редактировать и копируем название новости в новое поле, которое у нас появилось под датой.
Нажимаем изменить/сохранить. Готово.
////////////////
Наша компания предупреждает сразу, будьте внимательны, делайте резервные копии, за не предвиденные обстоятельства, потерю данных или прочий форс мажор, мы ответственность не несем, данная информация указывается в ознакомительных целя.
Список всех статей Просмотров: 15703 раз