Прямая ссылка на вкладку с использованием прототипа - PullRequest
0 голосов
/ 04 мая 2011

Я использую Magento для создания витрины магазина - я не привык к Prototype, но это то, что они используют по умолчанию, поэтому я стараюсь играть хорошо. Я использовал настройку вкладок, предоставленную в теме Modern (созданной командой Magento), и интегрировал ее в свою тему, и она прекрасно работает.

Где мне нужна помощь - это прямая ссылка на конкретную вкладку - я создал вкладку для размещения обзоров продуктов, и это прекрасно работает, но на странице выше есть ссылки, которые ссылаются на обзоры - однако они ссылки на другую страницу, которую я бы предпочел не использовать. Я не знаком с используемым прототипом, и я не знаю, как будет выглядеть ссылка для ссылки на вкладку - я бы хотел, чтобы опыт был похож на:

1) Нажмите на ссылку 2) Откроется вкладка «Обзоры», и страница переместит вас вниз - как заурядный якорь.

Значение href вкладки просто:

javascript:void(0);

JavaScript, который запускает операцию:

    Varien.Tabs = Class.create();
    Varien.Tabs.prototype = {
      initialize: function(selector) {
        var self=this;
        $$(selector+' a').each(this.initTab.bind(this));
      },

      initTab: function(el) {
          el.href = 'javascript:void(0)';
          if ($(el.parentNode).hasClassName('active')) {
            this.showContent(el);
          }
          el.observe('click', this.showContent.bind(this, el));
      },

      showContent: function(a) {
        var li = $(a.parentNode), ul = $(li.parentNode);
        ul.select('li', 'ol').each(function(el){
          var contents = $(el.id+'_contents');
          if (el==li) {
            el.addClassName('active');
            contents.show();
          } else {
            el.removeClassName('active');
            contents.hide();
          }
        });
      }
    }
    new Varien.Tabs('.product-tabs');

Я предполагаю, что мне нужно вызвать функцию showContent и просто заставить ее использовать вкладку обзоров, но я не совсем уверен, как это сделать. Если бы кто-нибудь мог пролить свет на это, я был бы признателен.

Спасибо.

Ответы [ 3 ]

1 голос
/ 12 сентября 2013

Не совсем правильный ответ right , то есть он немного обманывает, но мы решили это с помощью функции jQuery click () для имитации нажатия на вкладку.

т.е. дал заголовку вкладки обзоры привязку идентификатора 'tab-reviews-tab' и в нашей ссылке вверху страницы добавили следующий JS:

jQuery('#tab-reviews-tab').click();

Очевидно, это будетглупо включать jQuery только для этого, но если вы уже используете его для чего-то другого, то придерживаться того, что вы знаете, может работать!

0 голосов
/ 08 октября 2015

Ответ на ваш вопрос на gist и ipaste .

Вот это резюме:

Вам необходимо сохранить Varien.Tabsобъект в переменной, поэтому замените new Varien.Tabs('.product-tabs'); на var csTabs = new Varien.Tabs('.product-tabs');

Если вы делаете это только один раз, просто создайте ссылку следующим образом:

<a href="#" onclick="javascript:csTabs.showContent($$('#product_tabs_email_or_other_id a')[0]);" >The Link</a>

Если вы собираетесь делать это частопросто добавьте новый метод в Varien.Tabs (в строке 75)

openTab:  function(b) {
  var controlledLink = $$("#"+b+" a")[0];
  this.showContent(controlledLink);
}

Теперь ваши ссылки работают так:

<a href="#" onclick="javascript:csTabs.openTab('product_tabs_email');">Email</a>
<a href="#" onclick="javascript:csTabs.openTab('product_tabs_info');">Further Info</a>
0 голосов
/ 13 февраля 2012

Если кто-то все еще заинтересован в решении, вот подсказка к тому же вопросу:

souce link http://www.magentocommerce.com/boards/viewthread/59930/#t262411

Надеюсь, что это может помочь вам.

...