Регистрация
Вход через соцсети
Восстановление пароля

Облако тегов для для компонента "Публикации: статьи простые"

Новый топик
Страницы: 1  |  2
22.04.2011, 11:12
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

Всем привет! интересует вопрос, как создать для компонента "Публикации: статьи простые" строку тегов с выводом на главную страницу? Пробовал делать по руководству:

Цитата:
Руководство по модулям (142-145стр)
Для подключения функционала добавления тегов к сообщениям, следует
выполнить некоторые действия по модификации компонентов. Допустим,
требуется добавить теги в компонент новостей. Первое, что следует
выполнить, это добавить поле Tags (тип поля - строка) в список полей
компонента. В этом поле пользователи смогут через запятую перечислять
нужные теги для сообщений. Следующие шаги направлены на добавление
функций управления тегами в «действие после добавления», «действие
после изменения» и «действие после удаления» компонента.
В действии после добавления следует прописать вызов функции
Код:
nc_tag_add($sub, $cc, $msgID, $f_Tags)


Данная функция позволит добавить теги в сообщение.
В действии после изменения следует прописать вызов двух функций:
Код:
nc_tag_drop($cc, $message)
и
Код:
nc_tag_add($sub, $cc, $message, $f_Tags)
тем самым информация в базе данных тегов будет обновлена.

В действии после удаления следует прописать вызов функции
Код:
nc_tag_drop($cc, $message)


Для возврата к списку объектов, следует написать следующий код:
Код:
if ($inside_admin) {
ob_end_clean();
header("Location: $goBackLink&inside_admin=1");
exit;
} else {
echo NETCAT_MODERATION_MSG_OBJADD;
echo "<br><br>".$goBack;
}


Для использования компонента «Теги» в системных настройках нашего
компонента нужно добавить строку следующего содержания:
Код:
if($tags_messages) $query_where = "(a.Message_ID IN (".$tags_messages."))";

Это позволит фильтровать выводимые сообщения по прикреплённым к ним
тегам.


в результате, после добавления тега к новости выдается ошибка:
nc_tag_drop(135, 9) nc_tag_add(102, 135, 9, ключевик)
слово "ключевик" в данном примере служило добавляемым тегом к новости.

Подскажите что не так делаю? Поддержка 4ый день молчит..

имхо..
22.04.2011, 11:56
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Вы выложите на форум тот код, который вы написали, а не текст инструкции, который ни о чем никому не скажет.

Temet nosce...
22.04.2011, 16:22
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

для наглядности сделал видео (3 мин): неправильная установка тег...
если в шаблонах действия выбираю "сгенерировать код действия" то выдается просто ошибка выше. В каком шаге допускаю ошибку - не пойму, подсобите пожалуйста.

имхо..
22.04.2011, 16:49
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

гыыыы )))))))))

надо ваш этот пример отправить автору неткетовской документации по модулям с темой "как понимается документация простым обывателем"!

В компоненте в "Действие после добавления объект" нажмите "сгенерировать код действия". У вас сгенерится форма:
Код:
";
if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
echo $IsChecked ? NETCAT_MODERATION_MSG_OBJADD : NETCAT_MODERATION_MSG_OBJADDMOD;
echo "<br /><br />".$goBack;
}
echo "


далее в эту форму добавьте код из документации:
Код:
";
nc_tag_add($sub, $cc, $msgID, $f_Tags);

if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
echo $IsChecked ? NETCAT_MODERATION_MSG_OBJADD : NETCAT_MODERATION_MSG_OBJADDMOD;
echo "<br /><br />".$goBack;
}
echo "


в остальных полях делайте по аналогии.

Temet nosce...
22.04.2011, 19:38
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

Да, программирование не мой конек )) Спасибо, теперь новости добавляются без ошибок, но теги (возле новости и в меню "облако тегов") так и не выводятся.

Пробовал сделать по аналогии с компонентом "Блог: Записи блога", где в системных настройках прописано
Код:
// настройки тегов
if ($tagsSUB_ID = $MODULE_VARS['tagscloud']['TAGS_SUB_ID'] ) {
$tagsSUB_Hidden_URL = $db->get_var("SELECT `Hidden_URL` FROM `Subdivision` WHERE `Subdivision_ID` = '".intval($tagsSUB_ID)."'");
}

тогда возле новости выводится слово "Теги:" но самих тегов нет.

а если в системные настройки вписываю как по инструкции:
Код:
if($tags_messages) $query_where = "(a.Message_ID IN (".$tags_messages."))";
то не выводится даже слово "Теги:"

еще немного запутало из руководства:
Цитата:
Если требуется вывести список тегов сообщения в отображении объекта в
списке, следует внести туда строку следующего содержания:
Код:
".listQuery("SELECT a.Tag_ID, b.Tag_Text FROM Tags_Message AS a LEFT JOIN 
Tags_Data AS b ON a.Tag_ID=b.Tag_ID WHERE Sub_Class_ID=$cc AND
Message_ID=$f_RowID GROUP BY a.Tag_ID", "<a href='/tags/?tag=\
$data[Tag_ID]&amp;tagcc=$cc'>\$data[Tag_Text]</a> ")."

куда вставлять - в "Отображение объекта" или в "Объект в списке:"? пробовал и так и так..

явно нужен мануал для "чайника" )

имхо..
25.04.2011, 20:57
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

Аналогичный вопрос был в этой теме и других, но нигде так и не выложили решения для "простых обывателей"..

имхо..
25.04.2011, 21:53
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

выложите полные коды полей, куда вы что-то вставляете или опять также на видео.
в инструкции все коды валидные и работают.

Temet nosce...
26.04.2011, 16:49
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

Спасибо DiGGy, О.Константину и gaika за проявляемую помощь.

Положение дел с облаком тегов на текущий момент такое: тех. поддержка отписалась:
Цитата:
Приносим извинения, но произошло недоразумение, которое в ближайшее время будет исправлено. Модуль "Облако тегов" был обновлён, но в документации информацию не обновили. В указанном вами компоненте, я внесла необходимые изменения, а именно:

В системных настройках добавлена строка инициализации нового объекта класса тегов:
Код:
$nc_tags = new nc_tags();


В списке объектов по каждому из объектов строка тегов получается с помощью такого кода:
Код:
".$nc_tags->get_tags_str($classID, $f_RowID)."


Для добавления тега при добавлении новости, редактировании её и удалении необходимы следующие методы, соответственно:
Код:
".$nc_tags->add_message($calalogue,$sub, $cc, $classID, $message)."

Код:
".$nc_tags->update_message($calalogue,$sub, $cc, $classID, $message)."

Код:
".$nc_tags->drop_message($calalogue,$sub, $cc, $classID, $message)."

Функция и код вывода тегов в макете дизайна остался прежним.

Тех. поддержкой были сделаны изменения по моей просьбе, спасибо им, НО
при щелчке на один из тегов (например "тег1") выводится так же информация про "тег2", "тег3" и т.д. кажется что то забыли дописать.. Вот это как исправить можно? пример с тегом "Москва": тег Москва выводится так же информация с другими тегами

Сейчас настройки такие (полный код):
Объект в списке:
Код:
<div class='nc_row'>
$f_AdminButtons
".opt( $cc_settings['Group']=='date'&& $groupHeader=( $curDep == $f_Date_day ? NULL : $curDep=$f_Date_day ) , "<h4 class='nc_group'>$groupHeader.$f_Date_month.$f_Date_year</h4>" )
.opt( $cc_settings['Group']=='month'&& $groupHeader=( $curDep == $f_Date_month ? NULL : $curDep=$f_Date_month ) , "<h4 class='nc_group'>$groupHeader.$f_Date_year</h4>" )."

<h3>".opt_case($cc_settings['FullLink']!='more' && $f_Text , "<a href='$fullLink'>$f_Title</a>" , "$f_Title")."</h3>
".opt( $cc_settings['ShowPhotos'] && $f_Picture , "<img class='nc_row_img' src='$f_Picture' alt='$f_Title' align='left' />" )."
".opt( $f_Announce , "<p class='nc_announce'>$f_Announce</p>" )."

".opt( $cc_settings['Author']=='field' && $f_Author , "<div class='nc_author'>Автор: ".($f_Email?"<a href='mailto:$f_Email'>$f_Author</a>":$f_Author)."</div>")."
".opt( $cc_settings['Author']=='profile', "<a href='/profile/profile_$f_UserID.html'>Автор</a>")."

".( $cc_settings['ShowRating'] && $cc_settings['RatingSUB'] && $cc_settings['RatingCC'] ? "<b>рейтинг:</b> ".(int)s_list_class($cc_settings['RatingSUB'], $cc_settings['RatingCC'], "&scID=$cc&objID=$f_RowID&showWeight=1", true)." &nbsp; " : "" )."
".( $cc_settings['ShowComments'] && $cc_settings['CommentsSUB'] && $cc_settings['CommentsCC'] ? "<div class='nc_comments_count'><span><b>комментарии:</b> </span>".(int)s_list_class($cc_settings['CommentsSUB'], $cc_settings['CommentsCC'], "&scID=$cc&objID=$f_RowID&CountComments=1")."</div>" : "")."
".opt( $cc_settings['ShowDate'] , "<div class='nc_datetime'><span class='nc_date'>$f_Date_day.$f_Date_month.$f_Date_year</span></div>" )."

".opt($cc_settings['FullLink']!='title' && $f_Text , "<span class='nc_more'><a href='$fullLink'>подробнее...</a></span>")."
<div style='clear:both'></div>
</div>
".$nc_tags->get_tags_str($classID, $f_RowID)."


Системные настройки:
Код:
if ( isset($GLOBALS['date'])) list( $year, $month, $day ) = explode('-', $GLOBALS['date']);
if( !isset($year) || !$year) $year = date('Y');
if( !isset($month) || !$month) $month= date('m');
if( !isset($day) || !$day) $day = date('d');

if ( $cc_settings['ListingStyle']=='fixed' && !$recNum ) $recNum = $cc_settings['FixedNumRows'];
$groupHeader = false;

$nc_tags = new nc_tags();


ШАБЛОНЫ ДЕЙСТВИЙ
Действие после добавления объекта
Код:
".$nc_tags->add_message($calalogue,$sub, $cc, $classID, $message)."

Действие после изменения объекта
Код:
".$nc_tags->update_message($calalogue,$sub, $cc, $classID, $message)."

Действие после удаления объекта
Код:
".$nc_tags->drop_message($calalogue,$sub, $cc, $classID, $message)."


Настройки поля тегов:
Изображение

макет дизайна титульной стр:
Код:
<!--TAGS-->
".($MODULE_VARS['tagscloud'] ? "
<div class='type_block'>
<h2>Облако тегов</h2>
<div class='nc_row'>
".(!isset($tagsCloud) || !$tagsCloud ? opt($tagsCloud = nc_tag_cloud_sub_class( isset($tagcc) && $tagcc ? $tagcc : $cc, "<a href='$SUB_FOLDER/tags/%TAG_LINK%TAG_SUB_LINK' style='font-size:%TAG_HEIGHT%; \".opt(%TAG_HEIGHT>160, 'line-height:1em;').\"'>%TAG_NAME</a>"), "<div class='tags bg_border'>".$tagsCloud."</div>") : "")."
".(!isset($tagsCloud) || !$tagsCloud ? opt($tagsCloud = nc_tag_cloud_subdivision( isset($tagsub) && $tagsub ? $tagsub : $sub, "<a href='$SUB_FOLDER/tags/%TAG_LINK%TAG_SUB_LINK' style='font-size:%TAG_HEIGHT%; \".opt(%TAG_HEIGHT>160, 'line-height:1em;').\"'>%TAG_NAME</a>"), "<div class='tags bg_border'>".$tagsCloud."</div>") : "")."
".(!isset($tagsCloud) || !$tagsCloud ? opt($tagsCloud = nc_tag_cloud_all($catalogue, "<a href='$SUB_FOLDER/tags/%TAG_LINK%TAG_SUB_LINK' style='font-size:%TAG_HEIGHT%; \".opt(%TAG_HEIGHT>160, 'line-height:1em;').\"'>%TAG_NAME</a>"), "<div class='tags bg_border'>".$tagsCloud."</div>") : "")."
</div>
</div>
" : "")."
<!--/TAGS-->


имхо..
26.04.2011, 18:37
Ответить | Цитировать
okn.name
Константин Орленко
okn.name

Зарегистрирован:
2010-07-20
Сообщений: 208

Стрыанно, я по-старинке сделал на 4.5 и всё пашет нормально..
Герман, по моему мануалу тоже глухо? Должно ж работать

26.04.2011, 20:44
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

Привет Константин, по мануалу пробовал: выдает ошибку
Цитата:
Fatal error: Call to a member function count() on a non-object in Z:\home\ev11\www\netcat\require\s_list.inc.php(1007) : eval()'d code on line 5

добавлял еще строку
Код:
if($tags_messages) $query_where = "(a.Message_ID IN (".$tags_messages."))";
и меню тегов не отображается..

имхо..
26.04.2011, 21:20
Ответить | Цитировать
Герман

Зарегистрирован:
2011-04-15
Сообщений: 13

Не успел дописать предыдущий пост, как было получено дополнение от Константина про код в системных настройках компонента. Он несколько отличается от мануала и кода тех. поддержки, но работает на 100%. Пока установил только на локалке, завтра приступлю к веб ресурсу.

Еще раз благодарю отликнувшихся и отдельно РЕСПЕКТУЮ О.Константину за предоставленный мануал и оказанную помощь в решении вопроса.

имхо..
198 196 2011-05-11 09:19:17 11216
Страницы: 1  |  2
Описание проекта