Вход • Регистрация

модуль "Магазин"

  • 21 ноября 2018 г.
  • Добрый день!

    Вопрос по поводу модуля "Магазин".

    На странице товара есть интерактивные вкладки. "Описание", "Доставка и оплата", "Коментарии".
    Заголовки ВСЕХ этих вкладок задаются блоками.
    Контент 1ой вкладки задается через админскую панель, а контент остальных вкладок добавляется только через те же самые блоки.

    Как я могу в админской панели задать дополнительное поле куда будет вносится контент для дополнительных вкладок.

    Настройки я нашел в файле site.view.show_block_content.php

    Настройки для первой вкладке (контент которой можно внести через админскую панель)
    Цитата

    $tab1Content = $this->htmleditor($result['text']);
    if(!empty($tab1Content)) {
    $tab1Content = '<div class="text">'.$tab1Content.'</div>';
    $tab1Title = $this->htmleditor('<insert name="show_block" module="site" id="10" template="content">');
    if($tab1Title) {
    $tabs[$tab1Title] = $tab1Content;
    } else {
    $tabs[] = $tab1Content;
    }
    }


    Настройки для 2ой и последующей вкладок (контент которых может задаваться только блоками)
    Цитата

    $tab2Content = $this->htmleditor('<insert name="show_block" module="site" id="14" template="content">');
    if(!empty($tab2Content)) {
    $tab2Content = '<div class="text">'.$tab2Content.'</div>';
    $tab2Title = $this->htmleditor('<insert name="show_block" module="site" id="8" template="content">');
    if($tab2Title) {
    $tabs[$tab2Title] = $tab2Content;
    } else {
    $tabs[] = $tab2Content;
    }
    }
    • 21 ноября 2018 г.
    • Если я вас правильно поняла, то вы арендовали какой-то шаблон, в котором в карточке товара есть вкладки. И вы хотите создать новые вкладки, чтобы добавить еще какую-то информацию. Верно?

      С разбегу вы это не решите.

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

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

      Специалист за пару часов решит задачу (в среднем). Но все зависит от того, как это у вас вообще все реализовано.

      П.С. Я бы на вашем месте в проектах заказала доработку.
      • 21 ноября 2018 г.
      • Часов? Александра, ну что такое Вы говорите))))
        За пару часов можно еще несколько плагинов для вкладок написать)

        Тут делов на пару минут.
        • 21 ноября 2018 г.
        • Степан, спорный вопрос. Я же не знаю, как у него там реализовано. Может там скрипт на пару метров.
          Товарищ же ни сайт не показал, ни шаблон, на котором этот сайт сделан.

          В своем коде я за пару сек разберусь, дольше с хостом соединяться буду...
          А вот на счет чужого прогнозы не построишь.
      • 21 ноября 2018 г.
      • Да все верно. Я на сайте выбрал один из предложенных шаблонов и на основе этого шаблона уже делаю как мне больше нравится (подходит).

        Я, конечно, не особо разбираюсь, но методом проб и ошибок что-то получается. Просто данном случае, если я так понял надо еще и административную панель редактировать, т.к. в ней необходимо добавить дополнительное поле, куда я буду вносить информацию о товаре. Который потом будет на сайте выводиться $tab1Content = $this->htmleditor($result['text']);

        Но это мои мысли и может это как то по другому правильно реализовывается.

        Доработку мне я так думаю придется все равно заказывать, потому что я уже вижу моменты которые у меня "головы" точно не хватит разобрать. Просто хочется какие то моменты самому сделать, что-бы дальше я понимал что происходит когда какие то доработки мелки будут необходимы.
    • 21 ноября 2018 г.
    • Дайте весь код файла shop.view.id.php.
      И ссылку на сайт.
      • 21 ноября 2018 г.
      • http://nutritionfit.ru/

        Код
        <?php
        /**
        * Шаблон страницы товара
        *
        * @package DIAFAN.CMS
        * @author diafan.ru
        * @version 6.0
        * @license http://www.diafan.ru/license.html
        * @copyright Copyright (c) 2003-2018 OOO «Диафан» (http://www.diafan.ru/)
        */

        if (! defined('DIAFAN'))
        {
        $path = __FILE__;
        while(! file_exists($path.'/includes/404.php'))
        {
        $parent = dirname($path);
        if($parent == $path) exit;
        $path = $parent;
        }
        include $path.'/includes/404.php';
        }

        echo
        '<div class="shop-product js_shop">
        <div class="row">';
        echo $this->get('product_gallery', 'shop', $result);
        echo
        '<div class="shop-product__details col-12 col-md-6 col-lg-8 col-xl-6">';
        $title = $this->htmleditor('<insert name="show_block" module="site" id="9" template="content">');
        if(!empty($title)) {
        echo '<h3>'.$title.'</h3>';
        }
        if (!empty($result['anons'])) {
        echo '<div class="shop-product__anons text">'.$result['anons'].'</div>';
        }
        if (!empty($result['rating'])) {
        echo $result['rating'];
        }
        if (!empty($result['article'])) {
        echo '<div class="shop-product__article">'.$this->diafan->_('Артикул').': '.$result['article'].'</div>';
        }
        echo $this->get('param', 'shop', array('rows' => $result['param'], 'id' => $result['id'], 'result' => $result));
        echo $this->get('buy_form', 'shop', array('product' => true, 'row' => $result, 'result' => $result));
        echo
        '</div>
        </div>
        </div>';

        $tabs = array();
        $rubrics = '';
        $collection = '';

        $tab1Content = $this->htmleditor($result['text']);
        if(!empty($tab1Content)) {
        $tab1Content = '<div class="text">'.$tab1Content.'</div>';
        $tab1Title = $this->htmleditor('<insert name="show_block" module="site" id="10" template="content">');
        if($tab1Title) {
        $tabs[$tab1Title] = $tab1Content;
        } else {
        $tabs[] = $tab1Content;
        }
        }

        $tab2Content = $this->htmleditor('<insert name="show_block" module="site" id="14" template="content">');
        if(!empty($tab2Content)) {
        $tab2Content = '<div class="text">'.$tab2Content.'</div>';
        $tab2Title = $this->htmleditor('<insert name="show_block" module="site" id="8" template="content">');
        if($tab2Title) {
        $tabs[$tab2Title] = $tab2Content;
        } else {
        $tabs[] = $tab2Content;
        }
        }

        /* $tab4Content = $this->htmleditor('<insert name="show_block" module="site" id="19" template="content">');
        if(!empty($tab4Content)) {
        $tab4Content = '<div class="text">'.$tab4Content.'</div>';
        $tab4Title = $this->htmleditor('<insert name="show_block" module="site" id="15" template="content">');
        if($tab4Title) {
        $tabs[$tab4Title] = $tab4Content;
        } else {
        $tabs[] = $tab4Content;
        }
        } */

        if (!empty($result['comments']))
        {
        $result['comments'] = '<div class="row"><div class="col-sm-8">'.$result['comments'].'</div></div>';
        $tab3Title = $this->htmleditor('<insert name="show_block" module="site" id="11" template="content">');
        if($tab3Title) {
        $tabs[$tab3Title] = $result['comments'];
        } else {
        $tabs[] = $result['comments'];
        }
        }

        if(!empty($tabs))
        {
        foreach($tabs as $title => $content)
        {
        $isActive = !$collection;

        $rubrics .= '<li class="tabs-block__rubric'.($isActive ? ' active' : '').'">'.$title.'</li>';
        $collection .= '<li class="tabs-block__tab'.($isActive ? ' active' : '').'">'.$content.'</li>';

        }

        echo
        '<div class="shop-product-tabs tabs-block page-block">
        <ul class="tabs-block__rubrics h2">'.$rubrics.'</ul>
        <ul class="tabs-block__collection">'.$collection.'</ul>
        </div>';
        }

        echo $this->htmleditor('<insert name="show_block_rel" module="shop" count="6" images="1" defer="emergence" defer_title="Похожие товары">');
  • 22 ноября 2018 г. , редакция: 22 ноября 2018 г.
  • зашел в MySQL сайта. Получилось в админской части добавить новое поле куда будет вводиться информация. Но теперь возникли вопросы некоторые.

    1. В MySQL названия всех таблиц начинается с "diafan_" (например в моем случае diafan_shop) а в файлах идет обращение к таблице без данного префикса (таблица просто shop). Вопрос: может быть я смотрю не те таблицы в MySQL?

    2.Вопрос про структуре таблице. Опять же на моем примере. В таблице "diafan_shop" Есть текстовое поле с именем "text1". А в файле "shop.admin.php" идет обращение к полю под именем "text". Вопрос: почему поля называются по разному? php фаил обращается к таблице же по имени поля? ну это один из примеров, в этой же таблице есть несколько примеров, в название полей присутствует 1, а при обращение в php-файле имя поля без 1 "name1"-"name", "descr1"-"descr" и тд


    На последнем скриншоте поле "text1" это я уже добавил экспериментируя!
    • 22 ноября 2018 г.
    • https://www.diafan.ru/dokument/full-manual/developers/api/database/
      Цитата
      Название таблицы пишется без префикса в фигурных скобках.

      Пример:

      {attachments}

      Переводимые переменные в SQL-запросе пишутся в квадратных скобках.

      Соответственно, в модулях идет обращение {shop}, а система подставляет префикс.

      И если сайт переводимый, то обращаемся к полю [name], а система подставляет номер языковой версии, т.е. name1
  • 22 ноября 2018 г.
  • В нужной мне таблице добавил строку с именем "sostav1".
    В файле shop.admin.php прописал
    Код
    'sostav' => array(
    'type' => 'editor',
    'name' => 'Состав',
    'help' => 'Состав для страницы товара',
    'multilang' => true,
    ),


    После этого выбрал рандомный товар через админскую панель, там появилось текстовое, редактируемое поле "Состав" написал туда текст, проверил в базу данных данный текст попал в нужный мне товар в нужную строку с именем "sostav1".

    Теперь пытаюсь вывести данный текст на сайте в модуле магазина. Редактирую фаил shop.view.id.php. Пишу там следующее

    Код

    $tab4Content = $this->htmleditor($result['sostav']);
    if(!empty($tab4Content)) {
    $tab4Content = '<div class="text">'.$tab4Content.'</div>';
    $tab4Title = $this->htmleditor('<insert name="show_block" module="site" id="15" template="content">');
    if($tab4Title) {
    $tabs[$tab4Title] = $tab4Content;
    } else {
    $tabs[] = $tab4Content;
    }
    }


    При этом на сайте информация не появляется. А если же я например в строке $tab4Content = $this->htmleditor($result['sostav']); вместо 'sostav' напишу имя любой другой строки, которая уже была в БД (например 'text') то информация этой строки выводится. Я так понимаю мне еще где-то необходимо "объявить" свою новую строку.

    Куда смотреть?
    Спасибо!
    • 22 ноября 2018 г.
    • файл shop.model.php, функция id_query(). строка 1284
      в массив row, добавляется вся инфа из БД, после id, добавьте sostav
      будет примерно так:
      Код

      $row = DB::query_fetch_array("SELECT id, sostav, [name], [anons], [anons_plus], [text], timeedit, cat_id,"
      ." site_id, brand_id, [canonical], [keywords], [descr], sort, [title_meta], hit, new, action, is_file,"
      ." weight, width, height, length,"
      ." no_buy, article, [measure_unit], access, theme, view, [act], noindex".$fields." FROM {shop}"
      ." WHERE id=%d AND trash='0' AND site_id=%d"
      .(! $this->is_admin() ? " AND [act]='1'" : "")
      .(! $this->is_admin() && $this->diafan->configmodules('where_period_element') ? " AND date_start<=".$time." AND (date_finish=0 OR date_finish>=".$time.")" : '')
      ." LIMIT 1",
      $this->diafan->_route->show, $this->diafan->_site->id);

Новости

  • 24 апреля, среда
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 
  • 15 декабря 2023 г.
  • Подводим итоги 2023 года. Выпустили новую сборку DIAFAN.CMS 7.1.1, вводим новые тарифы на аренду сайта и коммерческую поддержку и автообновления с января 2024 г., строим планы на будущий год.