dwd

dwd

+382
Репутация
6746
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Не сохраняются сторонние поля в версии 2.14.0 4 декабря 2020 в 14:58
Fuze, нет желания спорить. У вас как всегда все просто. Замечу лишь что

И это правильно. Сервер не должен ожидать данных, кроме указанных в списке — мы же из доступного списка выбираем.

Ни разу это не правильно. Кто из нас программист? Я или сервер? Кому из нас виднее какие данные я хочу отправить и как их обработать?
В массовом использовании, во фронтэнде это бесспорно нужно. Но когда дело касается админки, когда я сознательно использую такой способ передачи данных зачем мне это ни разу не нужное бесплатное приложение?))
#2 [ЕСТЬ РЕШЕНИЕ] Не сохраняются сторонние поля в версии 2.14.0 4 декабря 2020 в 14:25
@noname, ужесточена проверка данных. Теперь нельзя подсунуть в форму значения, которых нет в предустановленных значениях списка. Правильно реализован алгоритм или нет спорить не буду, но это лишает разработчиков целого ряда возможностей. И именно отсюда данная проблема. Если вы заметили, то в последней версии компонента данных полей нет, эта возможность из компонента убрана. Решить данный вопрос можно только изобретая костыли. Если я не прав и кто-то знает опцию, отвечающую за валидацию значений, поправьте
Даю рецепт:
1. создаем в папке system/fields файл с именем cfdslist.php и содержимым
  1. <?php
  2.  
  3. class fieldCfdslist extends fieldList {
  4.  
  5. public $title = 'Список без валидации ключей';
  6.  
  7. public function validate_array_key($array, $value){
  8. return true;
  9. }
  10.  
  11.  
  12. }
2. Идем в папку templates/default/assets/fields, делаем копию файла list.tpl.php и переименовываем ее в cfdslist.tpl.php
3. открываем файл хука system/controllers/catfields/hooks/ctype_item_form.php, находим в нем сроку
  1. new fieldList('options:catsitem', array(
и заменяем на
  1. new fieldCfdslist('options:catsitem', array(
P.S. Если это сообщение попадется на глаза Fuze, то позволю себе внести рационализаторское предложение — добавить спискам опцию $validate_vals = true;(аналогично ряду опций типа $multiple, $dynamic_list и т.д.), отключение которой выключало бы строгую валидацию значений. Тогда не приходилось бы изобретать костыли.
#3 Фото для SEO лучше с копирайтом или без? 27 ноября 2020 в 12:51

Тут одно из двух, как я писал выше:
1. Даём украсть фото, но яндекс приводит по фото посетителей.
2. Не даём украсть фото (маркируем), но от яндекса прока нет.

Голдман Сакс
Именно для этого еще в ХХ веке придумали ватермарк.
Чтобы нельзя было написать "Источник — Яндекс-картинки"))
#4 Картинки в результатах поиска 7 октября 2020 в 10:48
jeeper, прошу простить и понять))
На коленке писал, в строке
  1. <?php html_image($item['photo'], 'normal', $item['title']); ?>
пропущен оператор echo потому и не выводится картинка. Вот так должно быть
  1. <?php if(!empty($item['image'])){ ?>
  2. <div class="field search_field_image">
  3. <?php echo html_image($item['photo'], 'normal', $item['title']); ?>
  4. </div>
  5. <?php } ?>
#5 Картинки в результатах поиска 6 октября 2020 в 23:51
Олег Васильевич я, зачем так усложнять?
1. вместо
  1. $core_model = new cmsModel;
  2. $photos = $core_model->yamlToArray($item['photo']);
лучше использовать статический метод
  1. cmsModel::yamlToArray($item['photo']);
2. Код из п.1 вообще не нужен, поскольку функция html_image() принимает как массив так и YAML

В итоге получается что не нужно ничего мудрить:
  1. <?php if(!empty($item['image'])){ ?>
  2. <div class="field search_field_image">
  3. <?php html_image($item['photo'], 'normal', $item['title']); ?>
  4. </div>
  5. <?php } ?>
#6 Ошибка в запросе БД 6 октября 2020 в 19:55
@VitaliyV, открываем таблицу widgets_bind_pages, переходим на вкладку "Структура", выделяем столбцы page_id, position, ordering и жмем кнопку "Индекс". Индекс создан, проблема решена.
Иллюстрация

после резервирования сайта и восстановление с Бэкапа выдало такую ошибку

Это не на ровном месте, а как следствие неверного экспорта или импорта таблиц БД. Далеко не факт, что данная ошибка будет единственной. Я бы не советовал вам доверять автоматическому созданию бэкапов. Лучше делать экспорт таблиц вручную. При экспорте установив галочку
IF NOT EXISTS (менее эффективно, т.к. индексы будут созданы во время создания таблицы)
вы оградите себя от подобных ошибок в дальнейшем.
#7 Ошибка в запросе БД 6 октября 2020 в 19:49
Tolya, немного не так))
Столбец в таблице присутствует, но для него отсутсвует индекс. Ошибочку вызывает строка запроса
  1. FORCE INDEX (page_id)
которая говорит что для более быстрого поиска необходимо использовать индекс page_id. Сам индекс должен выглядеть так:

Иллюстрация
#8 Курсы, уроки на сайте 21 августа 2020 в 23:41
Попробую предложить альтернативный способ — www.icms2-docs.ru/clientarea/product/42
#9 Поле Дата 19 августа 2020 в 17:16

Уже смотрел видео о вашем поле День рождения и не увидел, можно ли отображать не возраст, а именно дату рождения?
На видео отображен возраст.

Как-то странно вы смотрели. Чем отличаются данные поля от системного поля Дата?
Системное поле Дата обязывает вас указать год, а следовательно
— это не всегда нужно а иногда очень даже не нужно
— при фильтрации 01.03.2019 и 01.03.2020 это не одно и то же, найти все записи с 1 по 15 марта неважно какого года не выйдет. Следовательно для тех случаев когда важна именно дата(определенный день определенного месяца) данное поле не подходит.

Оба вышеуказанных поля вообще не знакомы с понятием "год". Вы указываете лишь месяц и число. В одном при помощи календаря, во втором из выпадающих списков. Ну и собственно:
— при заполнении поля выбираем только месяц и число
— при фильтрации по дате(01.03) или диапазону дат(01.03-15.03) будут найдены все записи с 1 по 15 марта неважно какого года;
#10 Поле Дата 19 августа 2020 в 16:30
Может это немного нескромно, но

#11 Ошибка при редактировании категорий контента 14 августа 2020 в 19:30
На основании изложенных вами фактов могу лишь подсказать направление поиска. Экшен редактирования контента создает объект формы, далее этот объект передается в хуки и еще далее в шаблон. Так вот до шаблона объект не долетает, в данной переменной вместо объекта к моменту ее попадания в шаблон содержится что-то другое. Очень часто подобные ошибки бывают когда в хук передается один набор переменных, а сам хук возвращает обратно другой. Это может быть как ошибка программиста, так и проблема совместимости версий. С каждым релизом набор и порядок переменных, передаваемых в хуки меняется и если сторонний компонент был написан под более раннюю версию системы, то возникновение подобных ошибок весьма вероятно. Проверьте наличие хуков content_cat_form, content_cat_edit_form, content_имя-тк_cat_form сторонних компонентов, попробуйте отключить данные хуки и посмотрите исчезнет ли проблема. Если таких хуков несколько отключая их по очереди вы найдете проблемный.
#12 [ЕСТЬ РЕШЕНИЕ] Некорректная установка Биллинг 5 августа 2020 в 10:26
Ответ очевиден — в процессе установки не созданы таблицы компонента. Как у вас это получилось я судить не берусь, но факт остается фактом. Решение проблемы кроется в файле install.sql, который вы найдете в корне установочного архива. Открываем этот файл и заменив cms_ своим префиксом таблиц(у вас префикс cms_) выполняем SQL-запросы из этого файла. Ну или просто нормально и по-человечески устанавливаем компонент через админку.
#13 Как перенести запись с одного типа контента в другой? 31 июля 2020 в 00:40
Пока сидел курил набросал на коленке — /users/files/download7683.html
Инструкция внутри. Все просто и примитивно. Красивых кнопочек нет. Кому мало сообщаю:
Редакция Prestige может быть изготовлена в качественно оборудованной мастерской из лучших материалов по вашему индивидуальному чертежу))
#14 Как перенести запись с одного типа контента в другой? 31 июля 2020 в 00:12
vikont, ignat, никаких проблем в реализации такого компонента нет, там все элементарно. И вопрос тут не в сверхзадаче, а в простом отсутствии интереса к ней. Почему? Потому что такая потребность возникает раз в пятилетку у одного из тысячи пользователей. И даже этот мизерный процент пользователей уменьшится еще в 10 раз если спросить каждого — "решу за 500р., устроит?". Сразу выяснится что тот контент который им надо перенести как бы и не особо важен, чтобы тратить на это деньги. Именно поэтому такого компонента до сих пор и нет. Никто из задающих подобные вопросы не хочет выступить стартером, все сидят и ждут что-нибудь готовенькое и бесплатненькое.

Ни у по существу вопроса — было б у меня больше времени я не поленился бы и написал такой скрипт. 90% необходимого функционала есть здесь — /users/files/download7135.html, остается лишь дописать выбор целевого типа контента и обработку записей в цикле. При желании можете использовать в том виде в котором это есть сейчас, просто открыв скрипт и вписав имя целевого типа контента вручную. Как это работает описать здесь — /forum/thread24850-2.html#294984
#15 [ЕСТЬ РЕШЕНИЕ] Как из свого контроллера, при отсутствии у него экшена принудительно запустить контроллер "Контент"? 29 июля 2020 в 19:07
Как-то так например

  1. public function routeAction($action_name) {
  2. if (!$this->isActionExists($action_name)){
  3. $this->redirect(куда нужно);
  4. }
  5. return $action_name;
  6. }
или так

  1. public function routeAction($action_name) {
  2.  
  3. if (!$this->isActionExists($action_name)){
  4. $core = cmsCore::getInstance();
  5. $core->uri_controller = 'content';
  6. $core->runController();
  7. return 'exit';
  8. }
  9.  
  10. return $action_name;
  11.  
  12. }
  13.  
  14. public function actionExit(){return;}
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.