Модуль ссtags под Друпал 7

Прислано: olk

вт, 21/06/2011 - 12:59

cctags

На днях перевел свой модуль cctags с шестой версии на седьмую.
Сctags – это альтернатива широко известного модуля tagedelic. Т.е. модуль формирует блок и/или страницу облака тэгов таксономии с атрибутом (классом) зависящим от частоты употребления данного термина в опубликованных нодах.
В чем преимущество данного модуля перед tagedelic.

Tagedelic – формирует ровно столько блоков (и страниц) сколько определено словарей в вашей системе причем не позволяет смешивать словари, т.е. один словарь – одно облако.
В модуле Cctags мы имеем:
Гибкие настройки и расширенные возможности по темизации вывода облака (отдельные файлы шаблонов для тэгов, названия словаря, страницы облака).
Возможность (через настройки включать несколько словарей (а для словарей с древовидной структурой - кроме этого включать/выключать нужный уровень)) вывода тэгов.
Автоматическая генерация нужного количества блоков и/или страниц.
Помимо этого вы можете сформировать практически одинаковые по содержанию блоки и разместить их в разных регионах для разных страниц сайта.

Концепция модуля Cctags основана на понятии элемента cctags.
Элемент cctags – это совокупность настроек для отображения одного блока и/или страницы терминов.
Вы можете добавить необходимое количество элементов и настроить каждый из них отдельно, причем разные элементы могут содержать один и тот же словарь или словари в любой комбинации.

Отличия модуля от версии для Друпал 6.
Убран не характерный и малоиспользуемый для данного модуля функционал:
1. Построение блока и страницы облака пользователей.
2. Построение блока материалов по связанным терминам.
3. Очистка словарей от не используемых терминов.
Проведена работа по совместимости кода модуля с версией PHP >= 5.3

Сам модуль можно пока взять тут (см. прикрепленный файл), чуть позже дев версия появится на д.о.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Valeratal в вт, 21/06/2011 - 15:49.

"olk" написал(а):

Очистка словарей от не используемых терминов.

жаль, удобная была штука

спасибо за модуль.


Опубликовано olk в вт, 21/06/2011 - 15:56.

Ну может в дальнейшем и включу, или сделаю отдельным суб-модулем ...
Просто есть нюанс, теперь (в смысле в 7-ке) словарь может быть подключен к любой (как бы это сказать) сущности - не обязательно к ноде, что влечет за собой риски "убить" термин не входящий (и не использованный) в нодах но нужный для функционирования. В шестерке такая-же ситуация кстати была например с форумами (по сути разделы/подразделы являлись терминами таксономии) или меню на основании таксономии ...


Опубликовано Valeratal в вт, 21/06/2011 - 16:01.

в целом понятно.
Ну да, вероятно целый субмодуль нужно делать, где прописывать все возможные условия удаления терминов


Опубликовано olk в ср, 22/06/2011 - 08:40.

Выложил релиз на д.о.  cctags


Опубликовано Valeratal в ср, 22/06/2011 - 10:42.

я немного побагрепорчу

у меня чего то не заработало

PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ct.page_extra_class' in 'field list': SELECT ct.cctid AS cctid, ct.name AS name, ct.block AS block, ct.block_name AS block_name, ct.page AS page, ct.page_title AS page_title, ct.page_path AS page_path, ct.page_level AS page_level, ct.page_amount AS page_amount, ct.page_sort AS page_sort, ct.page_mode AS page_mode, ct.page_vocname AS page_vocname, ct.page_extra_class AS page_extra_class, ct.item_data AS item_data FROM {cctags} ct; Array ( ) в функции _cctags_get_settings() (строка 409 в файле /sites/all/modules/cctags/cctags.module).


Опубликовано olk в ср, 22/06/2011 - 11:25.

"Valeratal" написал(а):

я немного побагрепорчу

у меня чего то не заработало

Если брали сначала у меня на сайте а потом с др.орг.
То надо отключить модуль, удалить модуль и включить его по новой (что бы пере создалась табличка cctags в базе).
Просто не стал заморачиватся с хуком update а просто немного изменил структуру таблицы.


Опубликовано Valeratal в ср, 22/06/2011 - 12:21.

не, сразу закачал с орга (это же 7-ка)


Опубликовано olk в ср, 22/06/2011 - 13:58.

"Valeratal" написал(а):

не, сразу закачал с орга (это же 7-ка)

Странно скачал сейчас с д.о. поставил вроде все ок. Случайно не переводил сайт с 6-ки (на которой был установлен cctags-6.x) на 7-ку ?
В этом случае надо все же сделать как я написал в предыдущем комменте «надо отключить модуль, удалить модуль и включить его по новой (что бы пере создалась табличка cctags в базе).»


Опубликовано Fr1eNd в пт, 24/06/2011 - 16:56.

Небольшую описку нашёл в форме управления
«Разрешить формирование юлока для данного элемента cctags».
Прикольный модуль. НА Прошлой неделе только искал аналог tagedelic, но не нашёл
Спасибо за вашу работу!


Опубликовано Koza4ok в пт, 24/06/2011 - 20:59.

http://www.avtostrahovanie-russia.ru/content/kia-vyvela-na-rossiiskii-rynok-novyi-avtomobil-picanto - новый автомобиль Picanto
http://www.biznes-hroniki.ru/content/nalogovye-vyplaty-ooo - налоговые выплаты ООО
http://www.dorogi-rossii.ru/content/stroitelstvo-dorog-v-rossii - дорожное строительство сегодня
http://www.stroinay.ru/content/pyat-zapretov-dlya-vashei-krasoty - 5 запретов для вашей красоты
http://www.tehnoblogger.ru/2011/05/v-izraile-sozdali-letayushhie-avtomobili - летающие автомобили
http://www.neotext09.ru - заработок на статьях
http://www.h20-serial.ru - H2O просто добавь воды
http://www.xponika.info/vzlom-seti-senata-ssha - Сенат США атакован
http://www.marketing-blogs.ru - маркетинг и реклама в России
http://www.greek-serial.ru/2010/08/universitet - Университет сериал MTV


Опубликовано Koza4ok в пт, 24/06/2011 - 20:59.

http://www.glomerulonefritanet.ru - гломерулонефрит
http://www.trihomoniazanet.ru/2011/06/epidermis - эпидермис
http://www.biznes-war.ru - бизнес войны сегодня
http://www.hlamidizios.ru - мединские новости в России и мире
http://www.investments-money.ru - куда лучше всего инвестировать деньги
http://www.oknapvhrussia.ru/content/metalloplastik-okna - металлопластиковые окна
http://www.seothebest.ru - свежие новости
http://www.elektrogrili-russia.ru - электрические грили в России
http://www.allinforus.ru - новости в мире и стране
http://www.lipstroi.ru/alyuminievye-konstrukcii-v-vashem-dome - алюминиевые конструкции


Опубликовано Valeratal в сб, 25/06/2011 - 08:26.

поставил таки модуль
но, что то не разобрался, как сделать обычное классическое облако (что указывать в правилах сортировки)


Опубликовано Dan в сб, 25/06/2011 - 10:08.

"olk" написал(а):

Tagedelic – формирует ровно столько блоков (и страниц) сколько определено словарей в вашей системе причем не позволяет смешивать словари, т.е. один словарь – одно облако.

Позволяет, правда только через АПИ. Остальных плюшек в тагаделике нет.
Может лучше было расширить функционал тагаделика?


Опубликовано Сьюз в вс, 26/06/2011 - 08:28.

а у меня cctags так и не ставится - выдает ошибку, мол, проблемы с сервером. Эх..


Опубликовано olk в пн, 27/06/2011 - 07:15.

"Valeratal" написал(а):

поставил таки модуль
но, что то не разобрался, как сделать обычное классическое облако (что указывать в правилах сортировки)

Я обычно оставляю умолчание - «по наименованию в порядке возрастания» - но это дело вкуса :)


Опубликовано olk в пн, 27/06/2011 - 07:15.

Сьюз написал(а):

а у меня cctags так и не ставится - выдает ошибку, мол, проблемы с сервером. Эх..

Я так понимаю вы ставили под 6.х , посмотрите у вас хоть один словарь таксономии определен ?


Опубликовано vb в сб, 30/07/2011 - 13:51.

Поставил сабж под php5.3 на D7 сразу получил предупреждения

Deprecated function: Call-time pass-by-reference has been deprecated in _theme_process_registry() (line 413 of /home/vb/websites/drupal7.com/includes/theme.inc).
Deprecated function: Call-time pass-by-reference has been deprecated in menu_execute_active_handler() (line 501 of /home/vb/websites/drupal7.com/includes/menu.inc)

Офф issue здесь
http://drupal.org/node/1234358
Работает вроде, но грустно это каждый раз наблюдать.


Опубликовано sumerokr в сб, 30/07/2011 - 15:23.

вчера только поставил себе на д7 php 5.2.xx
выдало какое-то предупреждение тоже.. очистил кэш, дернул крон. больше предупреждений не видел, настроил все за минуту, интуитивно.
отличная штука, спасибо автору!


Опубликовано Dan в сб, 30/07/2011 - 15:43.

Бегло глянул модуль.
Попробуйте заменить строки:
182: function cctags_invoke_cctags_term_count(&$term)
614: function template_preprocess_cctags_term(&$variables)
на
function cctags_invoke_cctags_term_count($term)
function template_preprocess_cctags_term($variables)

Если проканает, сделайте патч и прикрепите к issue.


Опубликовано vb в вс, 31/07/2011 - 10:21.

нет, не это.
баг оказался в файле cctags.admin.inc
там надо убрать амперсанд в двух строчках 248 и 251

cctags_settings_item_validate($form, $form_state);

ну посмотрим, может автор сам поправит,
ну а если не поправит, то поможем.

в модуле ещё желательно отступы поправить и некоторые отступления от стандартов кодирования, руки чешутся.


Опубликовано Dan в вс, 31/07/2011 - 10:49.

Поправь, автору патч применить - одно движение мышкой, гораздо проще, чем сесть и написать.


Опубликовано olk в вт, 02/08/2011 - 03:54.

Извиняюсь, что не реагировал на замечания. Был в отпуске, а там инет в гостинице вообще никакой :( т.е. он как бы есть, но реально что то написать или сделать вообще труба :) Сейчас немного отойду от отпуска и все поправлю ...


Опубликовано T-34 в пт, 12/08/2011 - 03:19.

Попробовал модуль (6.x-1.6) на словаре с ~1500 тегами.
Для страницы установил 10 уровней шрифтов - все отображается ок (так же, как у Tagadelic). Но в блоке при выводе 32 тегов (или другого количества) и любом количестве уровней все теги получаются практически одинакового размера. Проблема в том, что для блока используются те же уровни, что и для страницы, но количество тегов на странице и в блоке не сопоставимо, поэтому для блока нужно считать количество уровней отдельно (как в tagadelic).


Опубликовано Valeratal в пт, 12/08/2011 - 05:01.

кстати, что насчет кэширования?
Имхо ведь пересчитывать веса при каждой загрузке ноды (не знаю как сейчас)

Вообще, настройку бы. Пересчитывать веса раз в сутки (или другие варианты)


Опубликовано olk в пн, 15/08/2011 - 05:43.

"T-34" написал(а):

Попробовал модуль (6.x-1.6) на словаре с ~1500 тегами.
Для страницы установил 10 уровней шрифтов - все отображается ок (так же, как у Tagadelic). Но в блоке при выводе 32 тегов (или другого количества) и любом количестве уровней все теги получаются практически одинакового размера. Проблема в том, что для блока используются те же уровни, что и для страницы, но количество тегов на странице и в блоке не сопоставимо, поэтому для блока нужно считать количество уровней отдельно (как в tagadelic).

Вообще-то блок настраивается отдельно (в том числе и количество уровней шрифта) - настройка производиться непосредственно в блоке

"Valeratal" написал(а):

кстати, что насчет кэширования?
Имхо ведь пересчитывать веса при каждой загрузке ноды (не знаю как сейчас)

Вообще, настройку бы. Пересчитывать веса раз в сутки (или другие варианты)

Кэширование конечно есть, в 6 версии кэш сбрасывается на хуке hook_taxonomy (op == insert|delete|update), в 7-ке при на хуках hook_taxonomy_term_{update|delete|insert}


Опубликовано T-34 в пн, 15/08/2011 - 23:28.

"olk" написал(а):

Вообще-то блок настраивается отдельно (в том числе и количество уровней шрифта) - настройка производиться непосредственно в блоке

Да, я знаю. Поставил 10 уровней и 20 тегов, вот результат: http://dl.dropbox.com/u/5556131/tags.png
Смотрю css-классы тегов в блоке - у всех от level-8 до level-10, хотя по идее должны быть от level-1 до level-10. Это только в блоке, на странице с тегами (где их около 1500) все правильно.


Опубликовано olk в вт, 16/08/2011 - 05:37.

"T-34" написал(а):

Да, я знаю. Поставил 10 уровней и 20 тегов, вот результат: http://dl.dropbox.com/u/5556131/tags.png
Смотрю css-классы тегов в блоке - у всех от level-8 до level-10, хотя по идее должны быть от level-1 до level-10. Это только в блоке, на странице с тегами (где их около 1500) все правильно.

А понятно :) Есть в шестерки такой баг (вернее логическая ошибка алгоритма)
Можно пропатчить немного
в файле cctags.module закомментировать строку 549, вроде должно помочь
<?php     $terms cctags_sort_tags($terms'level,desc''mixed');?>


Опубликовано olk в вт, 16/08/2011 - 05:45.

Хотя нет не поможет, ладно разберусь выложу новую версию на днях и для 6-ки и для 7-ки


Опубликовано Artu в вт, 16/08/2011 - 22:54.

Отличный модуль от tagadelic и вообще. Спасибо.
(пробовал на 6)


Опубликовано olk в чт, 25/08/2011 - 09:57.

Обновил версию на d.o , текущая версия будет 7.x-1.5 (перепрыгнул через несколько миноров, так как до сих пор не могу по настоящему подружиться с Git).
Исправлены несколько небольших ошибок.
Изменен алгоритм формирования блока:
Теперь все тэги участвующие в элементе сначала сортируются по "весу" в убывающем порядке,
затем массив обрезается до размера облака в блоке и в конце вес этому "срезу" присваивается по новой.
В результате получаем более информативное облако в блоке.


Опубликовано Valeratal в чт, 25/08/2011 - 10:44.

Надо попробовать


Опубликовано T-34 в пт, 26/08/2011 - 06:00.

Спасибо, а для 6 версии?


Опубликовано Valeratal в сб, 27/08/2011 - 05:21.

2 вопроса возникло
1. Как отредактировать количество уровней и количество тегов для блока с облаком (для страницы вроде есть, для блока не вижу)
2. По странице с тегами. Хм, хотел вывести 100 популярных. Можно вывести все, но по 100 на странице. Может, сделать


Опубликовано olk в сб, 27/08/2011 - 06:32.

"Valeratal" написал(а):

2 вопроса возникло
1. Как отредактировать количество уровней и количество тегов для блока с облаком (для страницы вроде есть, для блока не вижу)
2. По странице с тегами. Хм, хотел вывести 100 популярных. Можно вывести все, но по 100 на странице. Может, сделать

1. Настраивается непосредственно в блоке (admin/structure/block)
2. Надо подумать, в принципе как фичу можно и сделать - а с другой стороны, что мешает сделать блок со 100 терминами и вывести его на страницу


Опубликовано Valeratal в сб, 27/08/2011 - 07:46.

1. Спасибо, нашел. (можно имхо сделать небольшую подсказку в админке элемента cctag)
2. В принципе сделать можно отдельным блоком.
Но, у меня выводилось 100 тегов раньше сниппетом, прямо в ноде

Блоком чем хуже:
1. Как приделать ссылку из другого блока на ноду, где это блок?
2. Расположить блок нужно будет с условием отображения по сути только по одному адресу той ноды. Имхо, нагружать "отображатор" друпала ради одной ноды...


Опубликовано olk в сб, 27/08/2011 - 09:24.

ок. добавлю такую фичу в следующем релизе


Опубликовано Valeratal в вс, 28/08/2011 - 07:08.

спасибо


Опубликовано vicshine в пн, 12/09/2011 - 12:31.

Товарисч olk, внесите пожалуйста ясность!
http://www.drupal.ru/node/68442


Новое на сайте