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

Дополнительные поля для страниц

  • 23 апреля 2014 г.
  • Добрый день,

    пытаюсь повторить вот это:
    http://cms.diafan.ru/dokument/full-manual/examples/new-field/
    для системного модуля "Страницы сайта".

    — добавил новое поле в diafan_site тип LONGTEXT
    — добавил в site.admin.php
    Код

    'lead' => array(
    'type' => 'editor',
    'name' => 'Анонс страницы',
    'help' => '...',
    'multilang' => true
    ),


    Поле в админке появилось, но при попытке сохранения выдает ошибки (см. ниже).
    Причем меня смущают названия полей, которые фигурируют в запросах к названиям добавлены единицы:
    name1='%h', lead1='%s', text1='%s',

    Со времени написания мануала что-то изменилось?
    В чем может быть проблема и как ее решить?

    Цитата

    Unknown column 'lead1' in 'field list'
    #1 trigger_error(Unknown column 'lead1' in 'field list', 512) called at [/diafan_5.3.4.8/includes/database.php:505]
    #2 DB::_query(UPDATE `diafan_site` SET name1='Траляля', lead1='', text1='<p><insert name="show_block...) called at [/f5_diafan_5.3.4.8/includes/database.php:139]
    #3 DB::query(UPDATE {site} SET name1='%h', lead1='%s', text1='%s', timeedit='%s', title_meta1='%h', keywords1='%s', descr1='%s', title_no_show='%d', noindex='%d', changefreq='%s', priority='%f', sort=%d, search_no...) called at [/Users/macos/Documents/Works/_Shared/_Webprojects/f5_diafan_5.3.4.8/adm/includes/save.php:224]
    #4 Save_admin->save() called at [(null):0]
    ...
    • 23 апреля 2014 г.
    • вот это надо удалить 'multilang' => true
      • 23 апреля 2014 г.
      • Спасибо, Александр, помогло!
        • 23 апреля 2014 г.
        • Сам с этим пару дней промучился, оказалось вот оно как...
          • 23 апреля 2014 г.
          • Александр, еще вопрос по теме:
            а как теперь проще вывести это поле в шаблон?

            Не понятно где и что править — то ли в модуле site искать, то ли в functions.php...
            Вы как сделали?
  • 24 апреля 2014 г.
  • Итак, продублирую ответ техподдержки, наверняка кому-нибудь пригодится.

    Для вывода поля, принадлежащего страницам сайта, требуется указать его в файле includes/init.php, функция private function page_in_site(). Сначала в запросе:

    Код
    $current_page = DB::query_fetch_array(
    "SELECT id, parent_id, [name], [title_meta], [name], [keywords], [descr],"
    ." title_no_show, noindex, [text], js, lead, "
    ...

    Затем добавить в массив:

    Код
    $this->theme = $current_page['theme'];
    $this->js = $current_page['js'];
    $this->lead = $current_page['lead'];
    if($this->module != "reminding")


    В таком случае поле будет доступно аналогично тому, как выводятся поля в файле includes/function.php, например, в функции public function show_text()

    echo $this->diafan->lead;

    Я пока сделал простой вариант:
    Код

    public function show_lead()
    {
    $lead = $this->diafan->lead;
    echo $lead;
    }


    В шаблоне вывожу так:
    Код
    <insert name="show_lead">


    Итого: несколько строк кода + поле в БД — получаем новый функционал.
    Разработчики — браво!

Новости

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

Форум