Добавление JS и CSS из модуля работает через раз

Главные вкладки

Аватар пользователя UksusoFF UksusoFF 9 февраля 2014 в 13:46

Добрый день!
Пробую в модуль Googtube добавить изображение которое отображается при шаринге ВКонтакте например:

<?phpdrupal_add_html_head_link(array('rel' => 'image_src', 'href' => 'http://i.ytimg.com/vi/'.$youtube_id.'/'.'hqdefault'.'.jpg'));
drupal_add_css(drupal_get_path('module','googtube').'/googtube.css', array('type' => 'external'));?>

и дополнительный CSS.
Почему-то оно работает только после очистки кэша.
Т.е. чищу кэш — все ок, в head есть link rel=image_src и css. Обновляю страницу и все, оно пропадает из кода.
Как быть?

Комментарии

Аватар пользователя UksusoFF UksusoFF 9 февраля 2014 в 14:10

"Chyvakoff" wrote:
Значит кэшируется.


Или где-то еще нужно выключить? И, получается, кэш вообще нельзя будет включить?

Аватар пользователя drupby drupby 9 февраля 2014 в 14:12

"UksusoFF" wrote:
<?phpdrupal_add_html_head_link(array('rel' => 'image_src', 'href' => 'http://i.ytimg.com/vi/'.$youtube_id.'/'.'hqdefault'.'.jpg'));
drupal_add_css(drupal_get_path('module','googtube').'/googtube.css', array('type' => 'external'));?>

где этот код находится?

"UksusoFF" wrote:
И, получается, кэш вообще нельзя будет включить?

он имел ввиду не кеш страниц - как раз таки если бы страница закешировалась и отдавалась из кеша то там бы все было

Аватар пользователя drupby drupby 9 февраля 2014 в 14:43

"UksusoFF" wrote:
Строка 218, рядом со пробовал 164 тоже самое.

ну и зачем было пихать свой код в тело декларации функции в чужом модуле , не зная что в функции выполняется и тем более когда и где потом эта функция вызывается?
если уж лезешь в чужой код , то надо было этот код отдебажить - поставить там точку останова и проверять вызывается ли эта функция постоянно?
тем более этот модуль делает фильтр , а фильтры то кешируются

Аватар пользователя UksusoFF UksusoFF 9 февраля 2014 в 14:57

drupby wrote:
ну и зачем было пихать свой код в тело декларации функции в чужом модуле , не зная что в функции выполняется и тем более когда и где потом эта функция вызывается?
если уж лезешь в чужой код , то надо было этот код отдебажить - поставить там точку останова и проверять вызывается ли эта функция постоянно?
тем более этот модуль делает фильтр , а фильтры то кешируются

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

Аватар пользователя drupby drupby 9 февраля 2014 в 15:24

"UksusoFF" wrote:
но разве не должна закешироваться правленая версия модуля?

а это как?

кешируется фильтр- поэтому функция вызовется один раз для получения данных , а потом они возьмутся из кеша
если без значения $youtube_id не обойтись при формировании link , то я бы подключал к примеру в hook_node_load или hook_node_view - там это id где то будет

Аватар пользователя UksusoFF UksusoFF 9 февраля 2014 в 15:53

drupby wrote:
а это как?

я думал что фильтр вызывается каждый раз если кэш отключен
drupby wrote:
кешируется фильтр- поэтому функция вызовется один раз для получения данных , а потом они возьмутся из кеша
если без значения $youtube_id не обойтись при формировании link , то я бы подключал к примеру в hook_node_load или hook_node_view - там это id где то будет

Получается что фильтр вызывается один раз и пишет в БД обработанную фильтрами версию и там только содержимое текста?
Т.е. в фильтре получается вообще нельзя использовать drupal_add_css и т.д., и нужно писать отдельный модуль который будет в hook_node_load или hook_node_view опять искать регексом ссылки на видео и уже тогда добавлять link rel?

Аватар пользователя drupby drupby 9 февраля 2014 в 16:35

"UksusoFF" wrote:
Получается что фильтр вызывается один раз и пишет в БД обработанную фильтрами версию и там только содержимое текста?

смотри hook_filter_info_alter
если его имплементировать в своем модуле , то можно для этого фильтра установить cache в значение false
ну или если уж решил его переписывать , то можно и в googtube_filter_info выключить кеш
только забудь про обновления модуля

Аватар пользователя UksusoFF UksusoFF 9 февраля 2014 в 18:30

"drupby" wrote:
только забудь про обновления модуля

Да ну это естественно
"Chyvakoff" wrote:
Да.

Спасибо, буду пробовать писать дополнительный

Аватар пользователя drupby drupby 9 февраля 2014 в 18:43

да и вообще зачем изобретать велосипед из костылей ?
для вставки youtube можно использовать media youtube а для отображения при постинге используется Open Graph из модуля metatag

Аватар пользователя UksusoFF UksusoFF 9 февраля 2014 в 19:03

"drupby" wrote:
да и вообще зачем изобретать велосипед из костылей ?

потому что:

  1. буду импортировать контент из Joomla, там нет отдельных полей, тоже своего рода фильтр. В контенте теги: {youtube}id{/youtube} и его бы тоже нужно обработать;
  2. помимо YouTube там еще есть Vimeo и возможно что-то еще;
  3. вывод YouTube не совсем стандартный, выводится картинка с кнопкой Play, по клику на кнопку вместо картинки подгружается видео.
Аватар пользователя Chyvakoff Chyvakoff 11 февраля 2014 в 12:13

Я вообще не понимаю этих модулей для ютуба и прочей хрени.
Обычное cck поле для текста + валидатор формы(по желанию) + небольшой парсер + темизация. Если надо мета тэги - тоже всё решаемо, на уровне пропроцессов.
Мне кажется тут кода на 200 строк максимум.

Аватар пользователя UksusoFF UksusoFF 11 февраля 2014 в 12:29

Chyvakoff wrote:
Обычное cck поле для текста + валидатор формы(по желанию) + небольшой парсер + темизация.

ну все это как раз и завернуто в модуль + конкретно у этого модуля суть в том что можно в любое место body вставить несколько видосов ссылкой.