iDrevniy

iDrevniy

+1 в карму :) Спасибо!
+39
Репутация
47
Рейтинг
#1 Создание компонента "Графики" 11 февраля 2018 в 01:28
Предыдущий оратор писал про математику. Я правильно понимаю, что данные для графиков будут вводиться вручную? Интересно было бы указывать на поля или свойства откуда брать данные и за какой период. Если это будет работать так, то я готов участвовать.
#2 Поля -> обработка значения другого поля 10 ноября 2017 в 17:10

А вывод должен формироваться функцией parse
в /system/fields/datediff.php

Sonat

Так и есть.

Спасибоideasdigger. Все получилось в лучшем виде. Тема закрыта.

Может кому пригодится:
datediff.php
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст

datediff.tpl.php
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
#3 Поля -> обработка значения другого поля 10 ноября 2017 в 14:34

iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация docs.instantcms.ru/dev/forms/field-file

ideasdigger

Читал. Но не догоняю. Почему не отображается во фронтэнде.
#1 Поля -> обработка значения другого поля 10 ноября 2017 в 12:59
Уважаемые коллеги! Снова обращаюсь за помощью.

ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.

ЧТО Я ДЕЛАЮ НЕ ТАК?
Создаю два файла: /system/fields/datediff.php и /templates/default/assets/fields/datediff.tpl.php

В файле datediff.php
  1. <?php
  2. class fieldDatediff extends cmsFormField {
  3. public $title = 'Прошло дней';
  4. public $is_virtual = true; //Потому что в базу заносить нечего, юзер ничего вводить не будет.
  5. public $sql = 'text NULL DEFAULT NULL';
  6. public $var_type = 'string';
  7. public $allow_index = false;
  8.  
  9. }
  10. ?>
В файле datediff.tpl.php
  1. <?php if($field->title) { ?>
  2. <label for="<?php echo $field->id; ?>"><?php echo $field->title; ?></label>
  3. <?php } ?>
  4.  
  5. //Теперь выводим разницу в днях
  6. <?php
  7. $startdate = $item['field_date'];
  8. $days = ceil((strtotime("$startdate") - time()) / 86400);
  9. echo $days*-1;
  10. ?>
Но схема не работает. Поле создается, но ничего не выводится. Дебаггер включен, но не ругается. Где я дурак?
#4 CSS для свойств и полей 29 октября 2017 в 23:58


Или я не так понял?

Lora
Значение поля (Север), может быть другим (Юг, Восток, Шапокляк и т.д.). И нужно каждое значение стилизовать по своему. Да и вроде как про свойства шла речь, а не про поля.

Вот вариант для свойств (нашел где-то в интернете):

  1.  
  2. $(document).ready(function(){
  3. $(".content_item_props .value").html(function(index, text) {
  4. return text.replace(new RegExp("север", 'g'), "север")
  5. });
  6. $(".content_item_props .value").html(function(index, text) {
  7. return text.replace(new RegExp("юг", 'g'), "юг")
  8. });
  9. });
  10.  

DолбаK

СПАСИБО +++!!! Я так понимаю, что на сегодняшний день это единственный рабочий вариант.
#1 Программистам: получение данных из контроллеров, шаблонов и т.д. 17 октября 2017 в 10:01
Доброго всем!

Друзья, не могу никак понять из документации и форума следующие моменты:
1. Получение данных из чужого контроллера. Например: как получить название или картинку из шаблона profile.tpl.php для, скажем, Maps. Другими словами как правильно сформировать запрос в Maps, чтобы отобразить какие-либо данные в профиле с привязкой к пользователю. И в принципе как сформировать запрос в чужой контроллер и получить значение для записи или пользователя.
2. С шаблонами та же история? Если я не в main.tpl.php как узнать опубликован ли виджет? Например, как сформировать запрос hasWidgetsOn из шаблона другого виджета (widget.tpl.php), и возможно ли это?

Извините за нубские вопросы, но не доходит до меня. Спасибо!
#5 Как изменить глубиномер 2 октября 2017 в 14:19
Я специально не писал про нескольких родителей. Думаю что при таком раскладе дочерний элемент должен быть самостоятельным. Иначе пользователь просто заблудится, один и тот же элемент принадлежит разному типу.

Так что я думаю решение отличное и логичное.
#6 Как изменить глубиномер 2 октября 2017 в 13:45
Да, конструкция получилась крутая. Еще раз спасибо вам @SmartControl и вам Loadырь.

Еще раз убедился, что система оч крутая, вопросы решаются проще, чем казалось сначала.
#7 Как изменить глубиномер 2 октября 2017 в 13:38


@SmartControl, в $item['parent_catalog_id'] может быть несколько записей.

Loadырь

А какие? Но все работает чудесно! Откорректировал ваш код под свои name'ы типа контента и без проблем!

По сути у меня все упиралось в эту строчку
  1. $news = cmsCore::getModel('content')->getContentItem('catalog', $item['parent_catalog_id']);
Ее я не мог придумать.
#8 Как изменить глубиномер 2 октября 2017 в 13:33


Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.

iDrevniy
Не уверен, что понял как именно вы хотите сделать.

Попробуйте так, добавьте в файл /templates/default/controllers/content/item_view.tpl.php строки
  1.  
  2. if($item["ctype_name"] == 'details') {
  3. $this->addBreadcrumb("Каталог", href_to('catalog'));
  4. $news = cmsCore::getModel('content')->getContentItem('catalog', $item['parent_catalog_id']);
  5. $this->addBreadcrumb($news['title'], href_to('catalog', $news['slug'] . '.html'));
  6. } else {
  7. .................
  8. тут старый код по формированию крошек
  9. .................
  10.  
  11. }
  12. $this->addBreadcrumb($item['title']); //эта строка остается
  13.  
У меня пример можно посмотреть тут. Это объявление созданное внутри новости. И крошки получаются Новости -> Моя новость -> Мое объявление

@SmartControl

Закрываем тему. Вам огромное спасибо! Как отблагодарить?
#9 Как изменить глубиномер 2 октября 2017 в 13:23


  1.  
  2. if($childs){
  3. if (!empty($childs['tabs'])){
  4. foreach($childs['tabs'] as $relation_name => $relation){
  5. $this->addBreadcrumb($relation['title'], href_to($relation_name));
  6. }
  7. }
  8. if (!empty($childs['lists'])){
  9. foreach($childs['lists'] as $relation){
  10. $this->addBreadcrumb($relation['title'], href_to($relation['ctype_name']));
  11. }
  12. }
  13. }
  14.  

Loadырь

Спасибо! Но не пашет. Думаю потому, что в вашем коде идет проверка на дочерние записи, а их как раз нет, поскольку запись сама дочерняя. Нам нужно найти родителя.

То есть
  1. !empty($childs['tabs']
вернет false, то есть отсутствие дочерних.
Как и
  1. !empty($childs['lists']
Любо я туплю.
#10 Как изменить глубиномер 2 октября 2017 в 13:19


  1.  
  2. if($childs){
  3. if (!empty($childs['tabs'])){
  4. foreach($childs['tabs'] as $relation_name => $relation){
  5. $this->addBreadcrumb($relation['title'], href_to($relation_name));
  6. }
  7. }
  8. if (!empty($childs['lists'])){
  9. foreach($childs['lists'] as $relation){
  10. $this->addBreadcrumb($relation['title'], href_to($relation['ctype_name']));
  11. }
  12. }
  13. }
  14.  

Loadырь

Спасибо! Но не пашет. Думаю потому, что в вашем коде идет проверка на дочерние записи, а их как раз нет, поскольку запись сама дочерняя. Нам нужно найти родителя.

Любо я туплю.
#11 Как изменить глубиномер 2 октября 2017 в 13:01
Эту темку можно как пожелание для следующей версии учесть.
#12 Как изменить глубиномер 2 октября 2017 в 12:34
Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.
#13 Как изменить глубиномер 2 октября 2017 в 12:14


Под двойку нет компонента, позволяющего создавать блоги.

iDrevniy
Вообще то это группы вроде.Нет? Переименуйте в Блог, выставьте права и все дела.)

Lora

Я об этом не подумал… Спасибо за идею.

Но у меня еще есть связанные типы контента, в которых я бы хотел реализовать правильный глубиномер.

Пока не могу понять как правильно передать параметры в экшене.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.