Возможно кому то пригодится.
При создании поста в блоге, под полем для ввода тегов к данной записи, вывод тегов, которые использовались на сайте ранее. При нажатии на тег в списке, он перелетает в список тегов для этой записи.
Для чего это может понадобиться.
Что бы было меньше разнобоя в тегах. Со временем забываешь, какие теги использовал для подобной темы в прошлый раз или просто забываешь как их формулировал: фильм или фильмы, картошка или картофель. Возможно, имея перед глазами подобную панельку, удастся более унифицировать набор используемых тегов.
Сам только применил для одного сайта, посмотрю, насколько это полезно позже.
в самый конец добавить это
Выше мы создаём список тегов по аналогии с уже имеющийся в том же файле функцией создания списка тегов. Но здесь мы по другому обрабатываем вывод html тегов, делаем так, что бы при клике по тегу, не открывался поиск по тегам, (хотя рядом с тегом есть счетчик его упоминаний, если кликнуть на него, откроется поиск по этому тегу в новой вкладке).
Кроме того, здесь можно изменить по своему усмотрению количество выводимых тегов и другие настройки специально для указанных целей.
Если тегов в базе пока не так много, можно выводить все теги из всех разделов, как сейчас с сортировкой по алфавиту.
Если их сотни или тысячи) можно вывести 100 самых популярных тегов.
в двух местах
после
и после
вставить строку
после
вставить это
Теперь, при создании, редактировании поста появляется вот такой бар с тегами.
При нажатии на тег в баре, он добавляется с список тегов этого материала.
Единственное неудобство, если редактировать старую запись, где уже были теги и добавлять новые, то перед первым добавляемым тегом придётся в ручную поставить запятую.
Что бы стилизовать теги в наборе можно в
styles.css добавить стили для него
типа
То может выглядеть как то так.
Вроде всё работает.
Кто хочет улучшить, дополнить, развить, не стесняйтесь)
Потом /components/content/fronted.php
перед
Код PHP:
вставить
Код PHP:
Перед
Код PHP:
вставить
В шаблон com_content_edit.tpl
после <input name="tags" type="text" class="text-input" id="tags...
Вставить
<div style="width:400px; height:100px; overflow:scroll;">{$mod.poptags}</div>
<script>
$('a.addtag').click(function(e){
$('#tags').val($('#tags').val() + this.getAttribute('param'));
e.preventDefault();
});
</script>
При создании поста в блоге, под полем для ввода тегов к данной записи, вывод тегов, которые использовались на сайте ранее. При нажатии на тег в списке, он перелетает в список тегов для этой записи.
Для чего это может понадобиться.
Что бы было меньше разнобоя в тегах. Со временем забываешь, какие теги использовал для подобной темы в прошлый раз или просто забываешь как их формулировал: фильм или фильмы, картошка или картофель. Возможно, имея перед глазами подобную панельку, удастся более унифицировать набор используемых тегов.
Сам только применил для одного сайта, посмотрю, насколько это полезно позже.
Шаг 1
В core/lib_tags.phpв самый конец добавить это
function cmsPopTagsList(){ $inDB = cmsDatabase::getInstance(); $html = ''; $sql = "SELECT t.tag, COUNT(t.tag) as num FROM cms_tags t GROUP BY t.tag ORDER BY t.tag"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)>0){ while($tag = $inDB->fetch_assoc($result)){ if ($tag['tag']){ $html .= '<a class="addtag" param=", '.$tag['tag'].'">'.$tag['tag'].'</a><a target="_blank" href="/search/tag/'.urlencode($tag['tag']).'">('.$tag['num'].')</a>'; } } } return $html; }
Кроме того, здесь можно изменить по своему усмотрению количество выводимых тегов и другие настройки специально для указанных целей.
Если тегов в базе пока не так много, можно выводить все теги из всех разделов, как сейчас с сортировкой по алфавиту.
Если их сотни или тысячи) можно вывести 100 самых популярных тегов.
function cmsPopTagsList(){ $inDB = cmsDatabase::getInstance(); $html = ''; $sql = "SELECT t.tag, COUNT(t.tag) as num FROM cms_tags t GROUP BY t.tag ORDER BY num LIMIT 100"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)>0){ while($tag = $inDB->fetch_assoc($result)){ if ($tag['tag']){ $html .= '<a class="addtag" param=", '.$tag['tag'].'">'.$tag['tag'].'</a><a target="_blank" href="/search/tag/'.urlencode($tag['tag']).'">('.$tag['num'].')</a>'; } } } return $html; }
Шаг 2
components/blogs/fronted.phpв двух местах
после
$post['tags'] = cmsTagLine('blogpost', $post['id'], false);
$post = cmsUser::sessionGet('mod');
$post['poptags'] = cmsPopTagsList();
Шаг 3
в шаблоне /components/com_blog_edit_post.tplпосле
<input name="tags" class="text-input" type="text" id="tags" style="width:400px" value="{$mod.tags|escape:'html'}"/>
<div style="width:400px; height:100px; overflow:scroll;">{$mod.poptags}</div> <script> $('a.addtag').click(function(e){ $('#tags').val($('#tags').val() + this.getAttribute('param')); e.preventDefault(); }); </script>
При нажатии на тег в баре, он добавляется с список тегов этого материала.
Единственное неудобство, если редактировать старую запись, где уже были теги и добавлять новые, то перед первым добавляемым тегом придётся в ручную поставить запятую.
Что бы стилизовать теги в наборе можно в
styles.css добавить стили для него
типа
.poptagsbar{ padding:3px; background:#004080; border-radius:4px; border:1px solid silver; margin:2px; opacity:0.8; display:inline-block;} .poptagsbar:hover{ opacity:1.0;} .poptagsbar a{ color:#FFFFFF; text-decoration:none; cursor:pointer;}
Вроде всё работает.
Кто хочет улучшить, дополнить, развить, не стесняйтесь)
UPD
Для статей
Шаг 1 если уже делали пропустисть.Потом /components/content/fronted.php
перед
Код PHP:
cmsPage::initTemplate('components', $article['tpl'])->
Код PHP:
$article['poptags'] = cmsPopTagsList();
Код PHP:
cmsPage::initTemplate('components', 'com_content_edit')->
$item['poptags'] = cmsPopTagsList();
после <input name="tags" type="text" class="text-input" id="tags...
Вставить
<div style="width:400px; height:100px; overflow:scroll;">{$mod.poptags}</div>
<script>
$('a.addtag').click(function(e){
$('#tags').val($('#tags').val() + this.getAttribute('param'));
e.preventDefault();
});
</script>
Реклама #
Василич 8 лет назад #
Полезно для узкоспециализированных ресурсов.
Нил™ 8 лет назад #
Для двойки не смогу, но наверно, если это полезно, разработчики для двойки возьму на заметку)
Пока думаю, нужно нечто подобное сделать для профиля (первая ветка) пользователя для поля "интересы", убрать полностью возможность писать произвольные метки и попросить выбирать из тегов. А то сейчас пользователи пишут туда иногда целые поэмы, которые никак не полезны для поиска людей с теми же интересами, а так можно задать набор возможных интересов, типа: путешествия, пиво, сериалы, животные и т. п.
Василич 8 лет назад #
Касательно юзеров, посмотри вк, есть предустановки но жёстко на них останавливаться думаю не стоит.
Cleverking 8 лет назад #
Нил™ 8 лет назад #
Нил™ 8 лет назад #
В предыдущем комментарии возникла ошибка, отредактировать его не могу, удалить тоже.
Исправил сам пост, исправленный ответ по поводу статей там.
allhyipmon 7 лет назад #
перед
Код PHP:
cmsPage::initTemplate('components', $article['tpl'])->
Нету такого кода :(
Нил™ 7 лет назад #
строка 271