Помогите с созданием поля

#1 16 февраля 2016 в 20:17
Доброго времени суток.
Пытаюсь сделать поле, в php я 0.
Нужно просто вывести заготовленный html код в нужном месте. (между других полей)
Сделано что то типа этого:
\system\fields\pole.php

  1.  
  2. <?php
  3. class fieldPole extends cmsFormField {
  4. public $title = 'Тип поля';
  5. public $sql = 'varchar(255) NULL DEFAULT NULL';
  6. public $filter_type = false;
  7. public $filter_hint = false;
  8.  
  9. public function Display($value){
  10. echo htmlspecialchars('ХТМЛ код');
  11. }
  12. }
  13.  
public $sql = 'varchar(255) NULL DEFAULT NULL';
это мне кажется лишним

Тут:
\templates\default\assets\fields\pole.tpl.php
Вообще не представляю что писать надо, или может вообще пустым оставить, при добавлении контента мне ничего прописывать не нужно.

В итоге после кучи разных попыток, то выводилось, то было 503 при добавлении материала, а сейчас вообще не понятно что…
#2 16 февраля 2016 в 20:25

public $sql = 'varchar(255) NULL DEFAULT NULL';
это мне кажется лишним

Jestik

то выводилось, то было 503 при добавлении материала, а сейчас вообще не понятно что...

Jestik
  1. public $sql = 'varchar(255) NULL DEFAULT NULL';
— это структура поля создаваемого в БД. в принципе можно поставить тиниинт с единицей
  1. public $sql = 'tinyint(1) NULL DEFAULT NULL';
  1. public function Display($value){
  2. echo htmlspecialchars('ХТМЛ код');
  3. }
с дисплем неммного не угадали, чтобы вывести надо
  1. public function parse($value){echo htmlspecialchars('ХТМЛ код');}
#3 16 февраля 2016 в 20:27

Тут:
\templates\default\assets\fields\pole.tpl.php
Вообще не представляю что писать надо, или может вообще пустым оставить, при добавлении контента мне ничего прописывать не нужно.

Jestik
  1. <?php if ($field->title) { ?><label for="<?php echo $field->id; ?>"><?php echo $field->title; ?></label><?php } ?>//название поля
  2. <?php echo html_input('hidden', $field->element_name, $value, array('id'=>$field->id)); ?>//поле - скрыто для заполнения
#4 16 февраля 2016 в 20:40
Soul, в его случае файл можно оставить пустым. Единственное всё таки надо прописать
  1. public $sql = 'tinyint( 1 ) NOT NULL DEFAULT "1"';
иначе поле будет пропущено, как пустое.
#5 16 февраля 2016 в 20:58
Loadырь, Soul, спасибо поле выводится!
В списке записей выводится как надо, а вот в самой записи, вот так:


Там же стили вроде для любых полей прописаны
#6 16 февраля 2016 в 21:04

И html код не обрабатывается…
#7 16 февраля 2016 в 21:30

В списке записей выводится как надо, а вот в самой записи, вот так:

Jestik

И html код не обрабатывается...

Jestik
Это смотря что и как Вы пытаетесь вывести.
например можно вывести так:
  1. public function parse($value){
  2. $width = $this->getOption('width');
  3. $height = $this->getOption('height');
  4. return '<img src="http://chart.apis.google.com/chart?cht=qr&chs='.$width.'x'.$height.'&chl=http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'].'" alt="">';
  5. }
или так :

  1.  
  2. public function parse($value){ ....
  3. $html.='<div class="formcontactsubmit">'.$this->getOption('submitbutton').'</div>';
  4.  
  5. $html.='<div class="result_done" style="display:none">'.$namesend.'Всё хорошо! <b>Письмо для <a href="'.href_to('users', $author['id']).'" title="Автор">'.$author['nickname'].'</a>, отправлено.</b></div><div class="ajaxotvet"></div>';
  6. $html.='<div id="formcontactajax"></div>';
  7. }
  8. $html.='</div>';
  9. $html.='</div>';
  10. $html.='<script>
  11. $("a.showform_mailtoauthor").click(function () {
  12. $("#form_mailto_author").toggle("slide");
  13. $("html, body").animate({
  14. scrollTop: $("#contactform").offset().top
  15. }, 2000);
  16. });
  17. </script>';
  18. // }
  19. return $html;
  20. }
Посмотрите по структуре полей "из коробки" и полей из дополнений.
#8 17 февраля 2016 в 17:47
Soul, Спасибо большое!
Буду пробовать)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.