Делаем строку таблицы ссылкой на материал через jquery

Пнд, 12/12/2016 - 09:10

Здравствуйте.
В первую очередь хочу выразить огромную благодарность моему другу Василию, который во многом мне помогает. Собственно, скрипт этот он писал.
______________________________________
У меня есть доска объявлений, анонсы которых отображаются в виде таблицы. Необходимо было сделать так, чтобы при клике в любом месте строки сайт отправлял на страницу с полным текстом материала.
table

Делать это путем модулей не стал - не хочется забивать сайт. Как это сделать через css не знаю.

1. Создаем текстовый файл.
2. Вставляем туда этот код:

jQuery(document).ready(function($) {
       
        function FollowingToLink(link)
        {
                if (link!== undefined) 
                        window.location.href = $(link).attr("href");
        }
       
        function GetLink(element)
        {
                return $(element).children(".views-field-title").children("a")[0];
        }
       
        function RedirectToRow(row)
        {
                var link = GetLink(row);
                FollowingToLink(link);         
        }
       
        $(".view-display-id-products_page>.view-content>.views-table").delegate("tr.even", "click", function(eventArgs)
        {
                RedirectToRow(eventArgs.currentTarget);                        
        });    
       
        $(".view-display-id-products_page>.view-content>.views-table").delegate("tr.odd", "click", function(eventArgs)
        {
                RedirectToRow(eventArgs.currentTarget);                        
        });    
});

3. Выбираем "сохранить как" и сохраняем с разрешением .js (ВАШЕ_НАЗВАНИЕ.js)
4. Заливаем скрипт в папку темы (у меня my_theme/js/script.js).
5. В .info файле темы подключаем скрипт: scripts[] = js/ВАШЕ_НАЗВАНИЕ.js
6. Чистим кэш на сайте.
_______________________________________________________________________
Чтобы скрипт у вас работал, ему нужно указать, к каким таблицам он должен применяться. В моем случае это:
$(".view-display-id-products_page>.view-content>.views-table").delegate("tr.even", "click", function(eventArgs)
и
        $(".view-display-id-products_page>.view-content>.views-table").delegate("tr.odd", "click", function(eventArgs)

Здесь мы указываем на какой странице и какую таблицу использовать:
«.view-display-id-products_page>.view-content>.views-table» и «.view-display-id-products_page>.view-content>.views-table»,
а так же указываем классы тегов tr (строк): tr.even и tr.odd.
Следовательно, вам нужно сюда вписать свои значения.
Узнать это все легко через инспектора или firebug.
_______________________________________________________________________
Вот и все. Прошу прощения, если где то неправильно выразился и криво выразил свое решение.
Спасибо за внимание.

0 Спасибо

Комментарии

Аватар пользователя ХулиGUN
6 months 2 недели назад ХулиGUN #

1. Drupal.behaviors
2.

sergeybelya написал:
Можно вариант с дата-атрибутом на tr

+
3. Лучше всего завернуть это всё в плагин:

$.fn.StreetMagicClickTr = function(element) {
// ...Сюды код
}

И потом можно цеплять на любую tr $('.yourClass').StreetMagicClickTr()

0 Спасибо
Аватар пользователя warh
6 months 2 недели назад warh #

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

0 Спасибо