|
|
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

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Вы выложите на форум тот код, который вы написали, а не текст инструкции, который ни о чем никому не скажет.
Temet nosce...
|
|
|
22.04.2011, 16:22
|
|
Герман
Зарегистрирован: 2011-04-15
Сообщений: 13
|
для наглядности сделал видео (3 мин): неправильная установка тегов
если в шаблонах действия выбираю "сгенерировать код действия" то выдается просто ошибка выше. В каком шаге допускаю ошибку - не пойму, подсобите пожалуйста.
имхо..
|
|
|
22.04.2011, 16:49
|
|
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]&tagcc=$cc'>\$data[Tag_Text]</a> ")."
куда вставлять - в "Отображение объекта" или в "Объект в списке:"? пробовал и так и так..
явно нужен мануал для "чайника" )
имхо..
|
|
|
25.04.2011, 20:57
|
|
Герман
Зарегистрирован: 2011-04-15
Сообщений: 13
|
Аналогичный вопрос был в этой теме и других, но нигде так и не выложили решения для "простых обывателей"..
имхо..
|
|
|
25.04.2011, 21:53
|
|
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)." " : "" )."
".( $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
|
|
Константин
Константин
Зарегистрирован: 2010-07-20
Сообщений: 210
|
Стрыанно, я по-старинке сделал на 4.5 и всё пашет нормально..
Герман, по моему мануалу тоже глухо? Должно ж работать
orlovkn
|
|
|
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%. Пока установил только на локалке, завтра приступлю к веб ресурсу.
Еще раз благодарю отликнувшихся и отдельно РЕСПЕКТУЮ О.Константину за предоставленный мануал и оказанную помощь в решении вопроса.
имхо..
|