Дополнительные вкладки на странице товара.

Тема в разделе "OpenCart", создана пользователем ForOpenCart, 17 авг 2016.

  1. ForOpenCart

    ForOpenCart

    Регистрация:
    6 фев 2016
    Сообщения:
    45
    Симпатии:
    27
    Добрый день!
    Подскажите, как можно добавить дополнительные вкладки на странице товара? Модули все доступные перепробовал, не отображается на шаблоне (fastor).
    Может вручную добавить как нибудь или подстроить модуль под шаблон, подскажите плз!
     
  2. shede

    shede

    Регистрация:
    11 авг 2016
    Сообщения:
    84
    Симпатии:
    46
    Сравните файлы своего шаблона со стандартным, скорее всего просто надо прописать вывод.
    Есть еще платный модуль
    Если надо сделать статичную (одинаковую) вкладку (например доставка), то можно и без модуля в коде (для этого нужен код product.tpl и адрес сайта).
    Вообще можно и вручную настроить вывод доп вкладки, где-то выдел мануал.
     
    Последнее редактирование: 17 авг 2016
    ForOpenCart нравится это.
  3. ForOpenCart

    ForOpenCart

    Регистрация:
    6 фев 2016
    Сообщения:
    45
    Симпатии:
    27
    Нужно что бы для разных товаров разные вкладки можно было создавать..
    А не вспомните где мануал можно найти?
    --- Добавлено, 17 авг 2016 ---
    Может подскажете как этот код под сторонний шаблон настроить. Это файл install модуля http://www.opencart.com/index.php?r..._id=27209&filter_search=tabs&filter_license=0
    Код:
    <modification>
        <name>New tab</name>
        <version>1.1</version>
        <link>http://store.cartbinder.com/</link>
        <author>cartbinder.com</author>
        <code>newtab</code>
        <file path="admin/controller/catalog/product.php">
            <operation>
                <search><![CDATA[if (isset($this->request->post['points'])) {]]>
                </search>
                <add position="before">
                    <![CDATA[
                    if ($this->db->query("SHOW TABLES LIKE '". DB_PREFIX ."product_newtabcontent'")->num_rows == 0) {
                $sql = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "product_newtabcontent` (
                      `product_id` int(11) NOT NULL,
                      `language_id` int(11) NOT NULL,
                      `newtabcontent`text NOT NULL,
                       `name`varchar(255) NOT NULL
                    ) ENGINE=MyISAM COLLATE=utf8_general_ci";
                $this->db->query($sql);        
          }
                        if (isset($this->request->post['product_newtabcontent'])) {
                $data['product_newtabcontent'] = $this->request->post['product_newtabcontent'];
            } elseif (isset($this->request->get['product_id'])) {
                $data['product_newtabcontent'] = $this->model_catalog_product->getProductExtraContent($this->request->get['product_id']);
            } else {
                $data['product_newtabcontent'] = array();
            }
          
            $data['version'] = str_replace(".","",VERSION);
    
            ]]></add>
            </operation>
        </file>
        <file path="admin/model/catalog/product.php">
            <operation>
                <search><![CDATA[foreach ($data['product_description'] as $language_id => $value) {]]>
                </search>
                <add position="before">
                    <![CDATA[
                    $this->db->query("DELETE FROM " . DB_PREFIX . "product_newtabcontent WHERE product_id = '" . (int)$product_id . "'");
                foreach ($data['product_newtabcontent'] as $language_id => $value) {
                    $this->db->query("INSERT INTO " . DB_PREFIX . "product_newtabcontent SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', newtabcontent = '" . $this->db->escape($value['newtabcontent']) . "',  name = '" . $this->db->escape($value['name']) . "'");
                }
                    ]]></add>
            </operation>
            <operation>
                <search><![CDATA[public function getProductOptions($product_id) {]]>
                </search>
                <add position="before">
                    <![CDATA[
                    public function getProductExtraContent($product_id) {
                        $product_newtabcontent_data = array();
    
                        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_newtabcontent WHERE product_id = '" . (int)$product_id . "'");
    
                        foreach ($query->rows as $result) {
                            $product_newtabcontent_data[$result['language_id']] = array(
                                'newtabcontent'             => $result['newtabcontent'],
                                'name'             => $result['name']
                            );
                        }
    
                        return $product_newtabcontent_data;
                    }
                    ]]></add>
            </operation>
        </file>
        <file path="admin/view/template/catalog/product_form.tpl">
            <operation>
                <search><![CDATA[<label class="col-sm-2 control-label" for="input-tag<?php echo $language['language_id']; ?>"><span data-toggle="tooltip" title="<?php echo $help_tag; ?>"><?php echo $entry_tag; ?></span></label>]]>
                </search>
                <add position="before">
                    <![CDATA[
                     <label class="col-sm-2 control-label" for="input-newtabname<?php echo $language['language_id']; ?>"><span data-toggle="tooltip" title="Tab Name will be shown on product page">New Tab Name</span></label>
                        <div class="col-sm-10">
                          <input type="text" name="product_newtabcontent[<?php echo $language['language_id']; ?>][name]" value="<?php echo isset($product_newtabcontent[$language['language_id']]) ? $product_newtabcontent[$language['language_id']]['name'] : ''; ?>" placeholder="Enter New Tab Name" id="input-newtabname<?php echo $language['language_id']; ?>" class="form-control" />
                    </div>
                  </div>
                    <div class="form-group">
                    <?php if($version < 2200) { ?>
                        <label class="col-sm-2 control-label" for="input-newtabcontent<?php echo $language['language_id']; ?>">New Tab Content</label>
                        <div class="col-sm-10">
                          <textarea name="product_newtabcontent[<?php echo $language['language_id']; ?>][newtabcontent]" placeholder="Enter New Tab Content" id="input-newtabcontent<?php echo $language['language_id']; ?>"><?php echo isset($product_newtabcontent[$language['language_id']]) ? $product_newtabcontent[$language['language_id']]['newtabcontent'] : ''; ?></textarea>
                        </div>
                      </div>
                    <?php } else { ?>
                        <label class="col-sm-2 control-label" for="input-newtabcontent<?php echo $language['language_id']; ?>">New Tab Content</label>
                        <div class="col-sm-10">
                          <textarea class="form-control summernote" name="product_newtabcontent[<?php echo $language['language_id']; ?>][newtabcontent]" placeholder="Enter New Tab Content" id="input-newtabcontent<?php echo $language['language_id']; ?>"><?php echo isset($product_newtabcontent[$language['language_id']]) ? $product_newtabcontent[$language['language_id']]['newtabcontent'] : ''; ?></textarea>
                        </div>
                      </div>
                    <?php } ?>
                     <div class="form-group">
            ]]></add>
            </operation>
            <operation>
                <search><![CDATA[<?php echo $footer; ?>]]>
                </search>
                <add position="before">
                    <![CDATA[
                    <?php if($version < 2200) { ?>
                      <script type="text/javascript"><!--
    <?php foreach ($languages as $language) { ?>
    $('#input-newtabcontent<?php echo $language['language_id']; ?>').summernote({height: 300});
    <?php } ?>
    //--></script>
    <?php } ?>
            ]]></add>
            </operation>
        </file>
    
        <file path="catalog/controller/product/product.php">
            <operation>
                <search><![CDATA[$data['points'] = $product_info['points'];]]>
                </search>
                <add position="before">
                    <![CDATA[
                    $data['newtabcontent'] = html_entity_decode($product_info['newtabcontent'], ENT_QUOTES, 'UTF-8');
                    $this->load->language('product/newtab');
                    $data['text_newtabcontent'] = $product_info['newtabcontentname'];
                    ]]></add>
            </operation>
        </file>
        <file path="catalog/model/catalog/product.php">
            <operation>
                <search><![CDATA[return array(]]>
                </search>
                <add position="before">
                    <![CDATA[
                    $newtabcontent_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_newtabcontent WHERE product_id = '" . (int)$product_id . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");
                    if($newtabcontent_query->num_rows)  {
                        $newtabcontent = $newtabcontent_query->row['newtabcontent'];
                        $newtabcontentname = $newtabcontent_query->row['name'];
                    } else {
                        $newtabcontent = "";
                        $newtabcontentname = "";
                    }
                    ]]></add>
            </operation>
            <operation>
                <search><![CDATA[return array(]]>
                </search>
                <add position="after">
                    <![CDATA[
                    'newtabcontent'       => $newtabcontent,
                    'newtabcontentname'       => $newtabcontentname,
                    ]]></add>
            </operation>
        </file>
    
        <file path="catalog/view/theme/*/template/product/product.tpl">
            <operation>
                <search><![CDATA[<li class="active"><a href="#tab-description" data-toggle="tab"><?php echo $tab_description; ?></a></li>]]>
                </search>
                <add position="after">
                    <![CDATA[
                    <?php if(isset($newtabcontent) && $newtabcontent) { ?>
                    <li><a href="#tab-newtabcontent" data-toggle="tab"><?php echo $text_newtabcontent; ?></a></li>
                    <?php } ?>
                    ]]></add>
            </operation>
            <operation>
                <search><![CDATA[<div class="tab-pane active" id="tab-description"><?php echo $description; ?></div>]]>
                </search>
                <add position="after">
                    <![CDATA[
                    <?php if(isset($newtabcontent) && $newtabcontent) { ?>
                    <div class="tab-pane" id="tab-newtabcontent"><?php echo $newtabcontent; ?></div>
                    <?php } ?>
                    ]]></add>
            </operation>
        </file>
    
    </modification>
    --- Добавлено, 17 авг 2016 ---
    А еще большая просьба глянуть на этот модуль. Если не сложно установить.
    Я установил, и там ошибка. Не пойму зачем там в архиве файл sql.
    Думаю что это мне знаний не хватает.. А модуль то что надо, и бесплатный.
     
    Последнее редактирование: 17 авг 2016
  4. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    221
    Симпатии:
    132
    Например, вот
    Код:
    http://www.opencart.com/index.php?route=extension/extension/info&extension_id=5557&filter_username=bull5-i&page=2
    У fastor вывод табов в товаре нестандартный, поэтому не заводится.
    По идее, в product.tpl (читайте комментарии в коде)

    Код:
    <div id="tabs" class="htabs">
          <?php $i = 0; foreach($tabs as $tab) { $i++;
              $id = 'tab_'.$i;
              if($tab['content'] == 'description') { $id = 'tab-description'; }
              if($tab['content'] == 'attribute') { $id = 'tab-attribute'; }
              if($tab['content'] == 'review') { $id = 'tab-review'; }
              echo '<a href="#'.$id.'">'.$tab['heading'].'</a>';
          } ?>
      </div>
    
    
    И перед </div>
    вставляем
    <?php if(isset($newtabcontent) && $newtabcontent) { ?>
                    <li><a href="#tab-newtabcontent" data-toggle="tab"><?php echo $text_newtabcontent; ?></a></li>
                    <?php } ?>
    
    
    Дальше, после
    <div id="tab-description" class="tab-content" itemprop="description"><?php echo $description; ?></div>
    вставляем
    <?php if(isset($newtabcontent) && $newtabcontent) { ?>
                    <div class="tab-pane" id="tab-newtabcontent"><?php echo $newtabcontent; ?></div>
                    <?php } ?>
    
    
    
    Должно работать
     
    ForOpenCart нравится это.
  5. shede

    shede

    Регистрация:
    11 авг 2016
    Сообщения:
    84
    Симпатии:
    46
    Найти можно тут, правда тут вкладка видео, но и для контента ее тоже можно использовать.
    Правильно samuel_L написал, Вам надо вызовы табов в Ваш шаблон подставить.
     
  6. ForOpenCart

    ForOpenCart

    Регистрация:
    6 фев 2016
    Сообщения:
    45
    Симпатии:
    27
    Действительно работает! спс!

    А еще большая просьба рассмотреть этот вопрос:
    "просьба глянуть на этот модуль. Если не сложно установить.
    Я установил, и там ошибка. Не пойму зачем там в архиве файл sql.
    Думаю что это мне знаний не хватает.. А модуль то что надо, и бесплатный."
    Уж очень модуль удобный!
     
  7. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    221
    Симпатии:
    132
    импортнуть в базу через phpmyadmin . предварительно бэкап сделайте
     
  8. ForOpenCart

    ForOpenCart

    Регистрация:
    6 фев 2016
    Сообщения:
    45
    Симпатии:
    27
    Наконец то нашел модуль нужной версии Custom Product Tabs PRO 2,4. Разместил его здесь, надеюсь будет полезен.
    Но! Опять не отображается в нужном шаблоне (fastor). Пробовал тот же код вставить в product.tpl как вы советовали раньше, но в этом случае не помогает.
    Подскажите еще раз, пожалуйста, какие необходимо внести правки, для корректного отображения данного модуля.
    Заранее благодарен!
     
  9. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    221
    Симпатии:
    132
    открываете файл vqmod. во втором случае custom_product_tab_default_theme_patch.xml
    ищете строку, которая вносит изменения в product.tpl
    <search position="replace"> означает что нужно заменить фрагмент кода, на тот, который указан ниже после <add><![CDATA[
    вручную вносите изменения и все заработает. в файлах ocmod,vqmod нет ничего сложного, все изменения на уровне пользователя блокнота обычно
     
    ForOpenCart нравится это.
  10. ForOpenCart

    ForOpenCart

    Регистрация:
    6 фев 2016
    Сообщения:
    45
    Симпатии:
    27
    А что конкретно нужно править?
    Там строка <search position="replace"><![CDATA[ встречается 3 раза и непонятно что на что нужно исправить.
    --- Добавлено, 18 авг 2016 ---
    Правлю, но к сожалению пока что ошибки..

    Спасибо за советы!
    Все работает!)
     
    Lasted edited by : 21 авг 2016
    samuel_L нравится это.