[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Курсы PHP. Модуль новостей от IRBIS-team
oleg_n
Вопрос к знатокам - Как можно сделать поиск новостей по тэгам??? Очень нужно :) Заранее благодарен :)


****

Кстати, в админке предусмотрено добавление новостей, и даже блок для этого есть:
 /**
* Add
* Блок добавления
*/

$subtitle = '';

if($GET['rem'] == 'new')
{
mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."news`
SET
`subtitle`='"
. IRB_LANG_NEW_NEWS ."',
`text` ='"
. IRB_LANG_NEW_NEWS ."'"
);


reDirect('rem=edit', 'id='. mysql_insert_id());

}

А вот ссылки с передачей параметра GET 'rem'= 'new', нигде нет :( Соответственно и добавить новость нет возможности.

В admin/news/show.tpl добавил следующее:
<div id="new">
<
a href="<?php echo href('rem=new'); ?>">Добавить новость</a> <br />
</
div>

И все работает!!!



Спустя 2 минуты, 21 секунда (9.08.2012 - 14:10) Игорь_Vasinsky написал(а):
для начала создать дополнительную таблицу с тегами

newsid | tag

потом дополнить форму добавления новостей полем для тегов.

после этого можно шарить по ней и вытаскивая newsid - тащить юзера за уши на эту новость

Спустя 20 часов, 55 минут, 39 секунд (10.08.2012 - 11:05) oleg_n написал(а):
Игорь_Vasinsky, это я понимаю, что без доп. таблицы не обойтись laugh.gif
Вот что пришло мне в голову:
Создаю 2 таблицы - таблицу с тэгами и таблицу, в которой id новости соответствует некоторое количество id тэгов.
В запросе же указываю номер id тэга, по которому определяются нужные id новостей и производится выборка из таблицы с новостями. rolleyes.gif
Почему так? Мысль такая - тэги могут добавляться по мере необходимости, соответственно их проще записывать в таблицу, да и отсортировывать по id, мне кажется проще, чем по самому тэгу. К тому же, при добавлении тэга к новости, идеальным будет вывод всего списка возможных тэгов, когда при клике на нужный тэг, он автоматически добавляется в нужное поле.
Отдельная таблица со списком соответствий, ещё хороша тем, что таких таблиц может быть несколько - для новостей и для статических страниц, причем стат. страницы могут находится в разных разделах сайта и при этом первая часть названия таблицы будет соответствовать названию раздела со стат. страницами и содержать их id rolleyes.gif
Дело осталось за малым - все это реализовать blink.gif

Спустя 44 минуты, 14 секунд (10.08.2012 - 11:50) Игорь_Vasinsky написал(а):
я тебе тоже самое написал -только одна таблица laugh.gif
Цитата

Отдельная таблица со списком соответствий, ещё хороша тем, что таких таблиц может быть несколько - для новостей и для статических страниц, причем стат. страницы могут находится в разных разделах сайта и


так у каждой новости должен быть уникальный id, хоть она в 10й поддериктории родительской категории.

Спустя 47 минут, 31 секунда (10.08.2012 - 12:37) oleg_n написал(а):
Цитата (Игорь_Vasinsky @ 10.08.2012 - 12:50)
я тебе тоже самое написал -только одна таблица  laugh.gif

Таблиц таки, как минимум две wink.gif

Цитата (Игорь_Vasinsky @ 10.08.2012 - 12:50)
Цитата

Отдельная таблица со списком соответствий, ещё хороша тем, что таких таблиц может быть несколько - для новостей и для статических страниц, причем стат. страницы могут находится в разных разделах сайта и

так у каждой новости должен быть уникальный id, хоть она в 10й поддериктории родительской категории.

Вы неверно все поняли - для новостей, своя таблица и свой уникальный id для каждой новости - это однозначно! Дело в другом - есть допустим поддериктория, в которой лежат стат. страницы и которые было бы желательно тоже проиндексировать через тэги, вот для них и создается другая таблица. При поиске по тэгам, сканируется все таблицы cool.gif

Спустя 3 часа, 14 минут, 57 секунд (10.08.2012 - 15:52) oleg_n написал(а):
Пока тэги обрастают мыслями, я прикрутил к редактору новостей WYSIWYG редактор, который использовался для статических страниц, поскольку тот что предложил Николай, мне не по душе :)
Все довольно просто. Меняем текст admin/news/show.tpl:
<h2>Новости</h2>
<form
action="" method="post">
<?php
echo $page_menu; ?>
<div
style="padding:10px">
<div
style="float:left">
<?php
echo $news; ?>
</div>
<div
style="float:right;padding:10px; width:600px; min-height:400px; color:#000000; background-color:#FFFFFF; border:1px solid">
<script
type="text/javascript">
WYSIWYG.attach('editor', full);
</script>


<div
id="main"></div>
<!-- window with smiles end -->


<!-- form begin -->

<form action="" method="post">
Заголовок:<br />
<input
size="70" name="form[value1]" type="text" value="<?php echo $POST['value1'] ?>" />
<textarea
id="editor" name="form[value2]" cols="60" rows="15" onselect='savesel(this)' onchange='savesel(this)'
onclick='savesel(this)' onfocus='savesel(this)' onkeyup='savesel(this)'><?php echo $POST['value2'] ?></textarea>
<br />
<input
type="submit" name="ok" value="отправить" />
</div>
<div
style="clear:both"></div>
<div
id="new">
<a
href="<?php echo href('rem=new'); ?>">Добавить новость</a> <br />
</div>
<div
style="clear:both"></div>
</div>
</form>

А в контроллере новостей админки и модуле новостей, нужно убрать вызов функции createBBtags, чтобы сохраненные новости отображались корректно. И дабы соблюсти все правила, при выводе неполной новости, применим strip_tags без параметров:
$row['text'] = strip_tags($row['text']) . "...";
было
$row['text'] = createBBtags($row['text'], false) . "...";

И чтобы не пролезла лишняя хрень из текста при выводе полной новости, применем strip_tags с параметрами исключения:
$row['text'] = strip_tags($row['text'],'<p><u><i><H1><H2><strong><br><img>');

В доп. параметре прописаны те хтмл-тэги, которые нужно исключить из обрезания, и этот список можно ещё дополнить ;)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.