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

Помогите вывести данные дополнительного поля текстовой страницы

  • 15 апреля 2014 г.
  • В общем задача такая. Есть сайт http://dialog.batester.ru/

    Мне надо на каждой странице чтобы можно было выводить свой рекламный текст в блоке

    Что я уже сделал:

    1. Я в таблице diafan_site добавил строку ban_text
    2. В файле site.admin.php я добавил строки

    Код

    'ban_text' => array(
    'type' => 'editor',
    'name' => 'Текст баннера',
    'help' => 'Рекламный текст'
    ),


    Теперь все это дело редактируется и сохраняется, теперь остается вопрос как все это дело вывести.

    В ТП сказали надо сделать вот так, но я чего-то не догоню как сделать

    Код
    Можно сделать отдельный шаблонный тэг, который будет выводить нужное поле из базы в нужном месте. Выборку осуществлять идентифицируя страницу по $this->diafan->cid.


    Пробовал сделать вот так:

    Для примера (по-тестировать) в функцию public function show_body добавил $this->show_bantext();

    и сделал для нее отдельную функцию

    Код
    public function show_bantext()
    {
    $ban_text = $this->diafan->_useradmin->get($this->diafan->ban_text, 'ban_text', $this->diafan->cid, 'site', _LANG);
    echo $ban_text;
    }


    вот так тоже пробовал

    Код
    $ban_text = $this->diafan->_useradmin->get($ban_text, 'ban_text', $this->diafan->cid, 'site', _LANG);


    Но итогом - пустота.
    • 15 апреля 2014 г.
    • В модульке файл model.php нужно в выборку добавить ban_text
      А выводить в view так , пример:

      echo $row["ban_text"]; или row заменить на result
      Смотря где выводим.

      то есть в модульке нужно получить вывод из БД а в шаблоне вставить
      • 16 апреля 2014 г.
      • Спасибо попробую
        • 16 апреля 2014 г.
        • Я вывести пробовал через function.php так как сама же страница она же не является по сути блоком

          Или и так должно сработать?

          Видимо придется в модель кое править код который отвечает за обозначение что это не страница а блок надо будет что выводить текст в любом случае

          Надо будет поте стоить


          Кстати, Виталий, может у дивана уже стояла подобная задача?
          • 16 апреля 2014 г.
          • Говорю же делать нужно в модульке.
            Делалось не однократно, всегда работает
          • 16 апреля 2014 г.
          • тут править нечего, просто разберитесь 1 раз в том, что такое модель, а что такое вьюха - жить проще станет)
            • 16 апреля 2014 г.
            • Хорошо парни, можете посчитать меня туповатым, но помогите разобраться

              site.model.php

              на 34 строчку прописал свою переменную

              Код
              public function show_block($id)
              {
              $time = mktime(1, 0, 0);
              $row = DB::query_fetch_array(
              "SELECT s.[text], s.[name], s.ban_text, s.title_no_show FROM {site_blocks} AS s"


              что делать дальше?
              • 16 апреля 2014 г.
              • Вывести во view Это сам шаблон где все выводите

                echo $row["ban_text"]; если не получилось row заменить на result
              • 16 апреля 2014 г.
              • написать перед
                return $result

                $result["ban_text"] = $row["ban_text"]; (тут естественно посмотреть, чтобы в $row было что надо)

                затем во вьюхе(шаблоне) функции show_block вы сможете использовать эту переменную так как написал ниже Денис.
              • 18 апреля 2014 г. , редакция: 18 апреля 2014 г.
              • вы добавили поле в site, а пытаетесь обратится к таблице site_block
                дальше выведется текст ошибки.

                вот вам нужно вот это:
                http://cms.diafan.ru/dokument/full-manual/examples/new-field/
                и это:
                http://cms.diafan.ru/dokument/full-manual/examples/template-tag/
                ====

                вам бы хватило только первой страницы, НО если делать как в техподдержке подсказали, то
                с первым мануалом всё, вы добавили.

                1. Я в таблице diafan_site добавил строку ban_text
                2. В файле site.admin.php я добавил строки


                далее шаблонный тег, открываете мануал как он добавляется(ссылка выше).
                Код
                Выборку осуществлять идентифицируя страницу по $this->diafan->cid.

                в шаблонном теге, простейший запрос к базе данных, к таблице site
                где id = $this->diafan->cid
                и лимит 1 добавьте,
                поле одно выводится у вас.

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

  • 21 апреля 2014 г.
  • Совместное решение Дениса (korogan) и ТП

    1. Делаем запрос в базу данных на добавление поля, у меня оно идет как ban_text

    Код
    ALTER TABLE `diafan_site` ADD `ban_text` VARCHAR(250) NOT NULL


    2. В файле site.admin.php я добавил строки

    Код

    Код
    'ban_text' => array(
    'type' => 'editor',
    'name' => 'Текст баннера',
    'help' => 'Рекламный текст'
    ),


    3. изменяем файл includes/init.php

    Код

    Строка 170 вставляем

    public $ban_text;



    Далее

    Код

    Строка 598
    "SELECT id, parent_id, [name], [title_meta], [name], [keywords], [descr], ban_text, "


    и еще раз

    Код

    Строка 645:

    $this->ban_text = $current_page['ban_text'];


    4. Далее идет в function.php

    добавляем функцию:

    Код
    public function show_bantext()
    {
    echo $this->diafan->ban_text;
    }

    5. Выводим все это дело в шаблоне

    Код
    <insert name="show_bantext">
    • 21 апреля 2014 г.
    • Огромное спасибо, все четко и по полочкам.
      • 21 апреля 2014 г.
      • Как работают динамические блоки?
        • 21 апреля 2014 г.
        • Да по типу их, только это решение для версии 5.3 делалось, на более ранних думаю тоже сработает
        • 21 апреля 2014 г.
        • Работают то нормально, но вот не хватает типов полей, и хотелось бы чтобы в модуле баннеры тоже можно было динамические блоки добавить.
  • 19 мая 2014 г.
  • у меня вопрос подобный : http://user.diafan.ru/forum/show1735/
    сможет ли мне кто помочь?

Новости

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

Форум