dwd

dwd

+382
Репутация
6746
Рейтинг
#1 Генерация Заголовка контента из значений свойств и полей 28 июля 2020 в 17:13
Так вроде Нифигаccе о-го-гошеньки все расписал уже. Заголовок это поле. И неважно где — в группах или в типах контента. Поэтому в группах все делается ровно так же как и в ТК. Разница лишь в том, что при составлении паттернов вы не сможете использовать такие переменные как {category} например, потому что категорий в группах нет. Но вам это и не потребуется по той же самой причине — нет категорий значит и нет повода использовать подобные переменные.
#2 [ЕСТЬ РЕШЕНИЕ] Ссылка на аватар 22 июля 2020 в 21:36
  1.  
  2. <img src="<?php echo html_avatar_image_src(cmsUser::getInstance()->avatar, 'micro'); ?>" alt="" class="img-profile">
  3.  
#3 Поле: заголовок 22 июля 2020 в 19:02
Открыть файл system/core/model.php, найти в нем

  1. public function getContentTableStruct(){
  2.  
  3. return array(
  4. 'id' => array('type' => 'primary'),
  5. 'title' => array('type' => 'varchar', 'size' => 100, 'fulltext' => true),
  6. 'content' => array('type' => 'text'),
  7. 'photo' => array('type' => 'text'),
  8. 'slug' => array('type' => 'varchar', 'index' => true, 'size' => 100),
  9. 'seo_keys' => array('type' => 'varchar', 'size' => 256),
и в строке

  1. 'title' => array('type' => 'varchar', 'size' => 100, 'fulltext' => true),
заменить цифру 100 на желаемое число символов. Все создаваемые типы контента будут иметь указанный вами размер поля title.
Для существующих типов контента просто открыть phpMyAdmin и изменить размер столбца title в таблицах типов контента(con_имя).
#4 Смена фона всего сайта 19 мая 2020 в 12:21
Есть масса вариантов, если хорошенько погуглить то можно найти минимум десяток толковых статей на эту тему.
Вот вам несколько вариантов решения данной задачи — codeplace.ru/articles/15-smena-shablona-saita-na-letu.html
Как это работает можно увидеть там же.
#5 [ЕСТЬ РЕШЕНИЕ] Глупый вопрос: типы контента 11 мая 2020 в 00:07

Увы, тогда всё равно придется получить полностью массив типов контента, а потом перебрать его и получить только id и title. Массив все равно будет висеть в оперативке. Плюс операции на извлечение двух индексов, плюс еще куча переменных.

Наверно мы живем в разных мирах или я просто не умею объяснять. Прочувствуйте разницу между getContentTypes(), которая читает все поля таблицы и
  1. $model->selectOnly('id')->select('title')->get('content_types');
P.S. Переживаете за расход памяти — используйте unset(); Однако в данном случае это не имеет смысла, поскольку как только данная функция завершит свою работу занимаемая этими переменными память освободится.
#6 [ЕСТЬ РЕШЕНИЕ] Глупый вопрос: типы контента 10 мая 2020 в 23:46
Ris, не я автор этого кода. Открываем файл system/controllers/content/widgets/categories/options_form.php и задаем этот вопрос Fuze)))
Если уж говорить об оптимизации и потреблении памяти, то и все поля таблицы читать не обязательно, достаточно двух полей — id, title))

P.S. Кстати, учитывайте тот факт, что форма, это не та страница, которая нуждается в сверхоптимизации. Сколько форм отправляют ежедневно ваши пользователи и сколько миллисекунд вы на этом выиграете?))
#7 [ЕСТЬ РЕШЕНИЕ] Глупый вопрос: типы контента 10 мая 2020 в 23:25
  1. new fieldList('ctype_id', array(
  2. 'title' => LANG_CONTENT_TYPE,
  3. 'generator' => function($item) {
  4.  
  5. $model = cmsCore::getModel('content');
  6. $tree = $model->getContentTypes();
  7.  
  8. $items = array();
  9.  
  10. if ($tree) {
  11. foreach ($tree as $item) {
  12. $items[$item['id']] = $item['title'];
  13. }
  14. }
  15.  
  16. return $items;
  17.  
  18. },
  19. )),
Любите мало кода?))
  1. new fieldList('ctype_id', array(
  2. 'title' => LANG_CONTENT_TYPE,
  3. 'items' => array_collection_to_list(cmsCore::getModel('content')->get('content_types'), 'id', 'title')
  4. )),

Раз уж вы разработчик, то задам еще вопрос: откуда оптимальнее(правильнее) подключать чужую модель в плане производительности: контроллер или экшн?

Я не разработчик, но рискну ответить — подключать надо там, где она вам нужна.
#8 Список Статей пользователя из Черновика 10 мая 2020 в 23:18
site.ru/moderation/draft
#9 IonCube в разработках. Важен ли он и для кого? 2 мая 2020 в 03:12

Один разработчик шифранул свое дополнение под 7.1 другой под 7.2, и первый в свою очередь пропал, а дополнение и то нужное и это, вообще беда получается.

@Vladlen
Ну а проблема собственно в чем? Рассматривая конкретно ваш случай могу сказать одно — файлы, кодированные под php7.1 будут отлично работать на 7.2. Ну а если рассматривать ситуацию вообще и в общем, то кодируя компонент разработчик должен предусмотреть наличие файлов для всех версий PHP. Ну и плюс приобретая компонент вы можете спросить у него об этом.
#10 Странности при загрузке страниц 20 апреля 2020 в 11:27
@Kerncraft1, проверяйте настройки полей. При включенном кэшировании процесс обработки поля сводится к простому выводу результата, хранимого в БД, это не должно вызывать ни нагрузки на сервер ни временных лагов.
  1. if($this->getOption('seotext_cache') && $value != 1 && $value != '') return $value;
Даже сотня полей не будет вызывать хоть сколько-либо значимую задержку. Если же кэш отключен, то скорость естественно будет зависеть от количества полей и сложности паттернов.
#11 Странности при загрузке страниц 20 апреля 2020 в 10:18
Этот код отвечает за обработку полей. Вам необходимо определить какие типы полей съедают большую часть времени и в дальнейшем смотреть как оптимизировать эти поля. После строки
  1. foreach($fields as $name=>$field){
вставьте
  1. if($field['type'] != 'list') continue;
так вы узнаете время обработки всех поле типа list
потом смените в этой строке тип на другой, например
  1. if($field['type'] != 'seostring') continue;
так вы увидите какой тип полей съедает больше ресурсов
#12 Странности при загрузке страниц 20 апреля 2020 в 09:17
@Kerncraft1, прописав ваш код в шаблоне вы таким образом замеряете время обработки самого шаблона. Основная часть работы выполняется системой до этого и уже готовая информация "вываливается" в шаблон. Вам нужно проводить данный эксперимент в файле system/controllers/content/actions/item_view.php, поместив ваши фрагменты между
  1. public function run(){
и
  1. return $this->cms_template->render('item_view', array(
и постепенно перемещая все ближе и ближе друг к другу до тех пор, пока вы не обнаружите участок кода, съедающий основную часть времени. По содержимому этой части можно будет судить кто виноват и что с этим делать.
#13 Парсер контента: вопросы 9 апреля 2020 в 02:55

И еще вопрос. А как поместить информацию (объявления) в свойства? Или можно только в поля?


По поводу самих свойств — вы сами должны решить что вам больше подходит. Лично я не использую свойства в виду ограниченности их возможностей(поддерживаются не все типы полей, невозможно использовать в сео и т.д.). Для решения этой задачи был написан компонент

Он наделяет поля теми же возможностями, которые имеют свойства. Однако если функционал свойств вас устраивает, то работа с ними мало отличается от работы с полями — www.youtube.com/watch?v=yMDTRC-mK9M
Также на канале вы найдете еще ряд роликов, посвященных парсеру и пакету расширения.
#14 Парсер контента: вопросы 9 апреля 2020 в 02:45
Capitan, вам Scythian ссылочку на документацию показывал видимо не зря, там все детально описано — codeplace.ru/manual/page/504-izobrazhenie-k-state.html
Ваша задача лишь указать фрагмент страницы, включающий в себя тег img с нужной вам картинкой. Вы можете указать хоть всю страницу целиком и парсер возьмет из нее первую встреченную им в коде картинку. Нет нужды "играть в снайпера" и выцеливать чисто сам тег img и тем более ссылку на картинку))
#15 Парсер контента: вопросы 9 апреля 2020 в 01:18
Мне тут ссылочку скинули на эту тему и вот я в ней появился)) Всех приветствую!
Capitan, прежде всего позвольте замечание вам лично — "Вот что говорят" и "Вот что ответил разработчик" это две разные вещи. Читая посты в этой теме складывается впечатление, что вы бьетесь как рыба об лед пытаясь до меня достучаться и ответа нет, что абсолютно не соответствует действительности. 5 апреля мы общались в ЛС, вчера на моем сайте. Ну а теперь по сути. На все эти вопросы я вам уже ответил, но коль они заданы в теме придется повторить(а возможно и дополнить по ходу):

При правильно настроенном задании вы не должны видеть никаких нотисов. Если у вас возникают уведомления или преупреждения PHP(не надо путать их с ошибками, ошибки в PHP выглядят совсем иначе), то это однозначно говорит о том, что вы неверно настроили задание. Например, вот возникающее у вас уведомление:
  1. Notice: Undefined index: paths in /var/www////s/system/controllers/parser/frontend.php on line 75
О чем оно говорит? О том, что парсеру не удалось скачать картинку. Это возможно в ряде случаев:

— Настраивая получение картинки вы выбрали участок страницы в котором картинок нет. Сам фрагмент страницы присутствует, был получен и обработан, однако картинку в нем найти не удалось.
— Ссылка на картинку не имеет расширения. Загрузчик инстанта не умеет загружать картинки у которых отсутствует раширение файла(.jpg, .png и т.д.)
— Другие причины, например та, которую рассмотрим ниже

Почему не удалось? Чиатем седующие нотисы:
  1. Warning: Invalid argument supplied for foreach() in /var/www/////system/controllers/parser/frontend.php on line 75
  2. Notice: Undefined index: normal in /var/www//////system/controllers/parser/hooks/cron_parser.php on line 74
И тут мы однозначно можем сказать, что картинку загружать вы пытаетесь, однако не выбрали ни одного пресета, который из нее следует создать.

Почему эти нотисы не убраны? Потому что парсер это чисто технический компонент и тут избыток информации лучше, чем ее недостаток. А нотисы это информация. Вот как в примере выше можно брать и ставить диагнозы)) Просто знайте — если вы видите нотисы значит не все прошло так гладко как хотелось бы. Хотя в ряде случаев это может даже не повлиять на конечный результат. Я постарался сделать компонент максимально устойчивым к различным внештатным ситуациям.

Спарсенные картинки в контенте не кликабельны. Как сделать чтобы они «открывались» по клику?

Поведение картинки зависит исключительно от настроек поля. В нем должен быть выбран пресет "Размер картинки при клике". В парсере вы должны лишь поставить галочку напротив данного пресета

При парсинге есть дубли ссылок в списке на сайте доноре и соответственно при «поиске ссылок» Как их убрать? Получается при добавлении по две-три идентичные записи!

Дублирование публикаций невозможно в принципе. Парсер никогда не станет качать публикацию с того же url с которого уже качал ранее. Единственный возможный вариант, при котором возможно задваивание это неверно настроенная фильтрация ссылок. Например у вас выбираются ссылки
site.ru/page.html
site.ru/page.html#comments
которые имеют разные url, но по сути ведут на одну страницу. Используйте черный и белый списки чтобы исключить дубли ссылок.

Ну и по поводу запуска по крону отвечать вроде не на что, крон на всем сайте не работал как выяснилось.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.