Перейти к публикации

Рекомендованные сообщения

11.11.2023 в 11:10, celsoft сказал:

И как вы представляете себе чтобы теги [root] связывались с тегом {custom ...} и понимали что там ничего нет?

значит нужно альтернативное решение, в конце конов - главное конечный результат

смысл в том, чтобы не показывать некоторые блоки если определенный custom пустой

[if] там какой нибудь придумать или еще чего

Ссылка на сообщение
Поделиться на других сайтах

@celsoftИмеется ввиду, что это всё происходит внутри кастома. А там уже для каждого вызова будут определятся состояниями переменных и в зависимости от них можно реализовать теги. Но и в данной реализации теги совершенно лишние. Ведь суть простая если кастом может что-то вернуть и в параметре указано имя шаблона то кастом подключает шаблон помещает ответ в него.

Вот как пример о чём речь. Тут есть 3 тега, {content} указывает размещение где в шаблоне будут новости, два блочных тега [found] и [not-found] определяющие разметку в зависимости от того имеются ли новости или нет. При этом с тегом [not-found] связан параметр отображения шаблона. То есть если тега на разметку отсутствия новости нету то по умолчанию тег {custom} вернёт empty, если же в шаблоне этот тег будет то он вернёт ответ шаблон где будет информация об отсутствии новостей или то что вы напишите.

Дополнительно в шаблонах могут работать некоторые глобальные стандартные теги, например теги group и not-group. Другие не проверял. 

Скрытый текст

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Template block for custom</name>
	<description>Параметр area_tpl на подключение дополнительного tpl файла и использование его в качестве основной разметки для custom новостей.</description>
	<icon></icon>
	<version></version>
	<dleversion>13</dleversion>
	<versioncompare>greater</versioncompare>
	<upgradeurl></upgradeurl>
	<filedelete>0</filedelete>
	<needplugin></needplugin>
	<mnotice>1</mnotice>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<phpinstall><![CDATA[]]></phpinstall>
	<phpupgrade><![CDATA[]]></phpupgrade>
	<phpenable><![CDATA[]]></phpenable>
	<phpdisable><![CDATA[]]></phpdisable>
	<phpdelete><![CDATA[]]></phpdelete>
	<notice><![CDATA[<p>@<a href="https://t.me/TeraMoune" target="_blank">TeraMoune</a></p>
[code][not-found] Новостей нету  [/not-found]
[found] Новости есть [/found]
{content} - тег определяет в каком месте будет ответ custom в area tpl[/code]]]></notice>
	<file name="engine/modules/functions.php">
		<operation action="before">
			<searchcode><![CDATA[$content = dle_cache( "news", $custom_cache_id, true );]]></searchcode>
			<replacecode><![CDATA[$area_tpl 		= false;
if( preg_match( "#area_tpl=['\"](.+?)['\"]#i", $param_str, $match ) ) {
	$area_tpl = trim($match[1]);  	
}]]></replacecode>
			<enabled>1</enabled>
		</operation>
		<operation action="before">
			<searchcode><![CDATA[return $content;]]></searchcode>
			<replacecode><![CDATA[if( $area_tpl ) {
	$tpl = new dle_template();
	$tpl->dir = TEMPLATE_DIR;				
	$tpl->is_custom = true;  
	$tpl->load_template($area_tpl);  
    $tpl->set_block("'\\[not-found\\](.*?)\\[/not-found\\]'si", "");
    $tpl->set_block("'\\[found\\]|\\[/found\\]'si", "");
	$tpl->set('{content}', $content);
	$tpl->is_custom = false;
  	$tpl->compile('custom-content');
  	$tpl->clear();
}
$content = $tpl->result['custom-content'];]]></replacecode>
			<searchcount>1</searchcount>
			<replacecount>3</replacecount>
			<enabled>1</enabled>
		</operation>
		<operation action="before">
			<searchcode><![CDATA[return $tpl->result['content'];]]></searchcode>
			<replacecode><![CDATA[$return_areaTpl = false;
if( $area_tpl ) {
	$tpl->load_template($area_tpl);
 
  	if( $custom_news OR strpos( $tpl->copy_template, "[not-found" ) !== false ) $return_areaTpl = true;
  
  	if( $custom_news ) {
    	$tpl->set_block("'\\[not-found\\](.*?)\\[/not-found\\]'si", "");
    	$tpl->set_block("'\\[found\\]|\\[/found\\]'si", "");
      	$tpl->set('{content}', $tpl->result['content']);
    } else {
     	$tpl->set_block("'\\[not-found\\]|\\[/not-found\\]'si", "");
    	$tpl->set_block("'\\[found\\](.*?)\\[/found\\]'si", "");
      	$tpl->set('{content}', '');     
    }

  	$tpl->compile('custom-content');
  	$tpl->clear();
}
$tpl->result['content'] = $return_areaTpl ? $tpl->result['custom-content'] : $tpl->result['content'];]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
</dleplugin>

 

P.S. У меня есть вопрос к переменной $custom_news, зачем он находится вне функции, в этом логика когда первый вызов функции меняет состояние переменной, а последующий вызов учтёт и сохранит кэш для пустого результата. При этом если первый не изменит состояние то все вызовы будут всегда до тех пор пока первый не вернёт хоть что-то.

Изменено пользователем TeraMoune
Ссылка на сообщение
Поделиться на других сайтах

Недавно появилась возможность ссылку ставить непосредственно на комментарий.

Для того чтобы добавить автоматический поиск при формировании пользовательских ссылок в шаблоне, вам необходимо добавить к ссылкам атрибут: onclick="findCommentsPage(this, '{id}', '{news-id}'); return false;"

А для Шаблона E-Mail сообщений также можно сделать?
Пришло уведомление на почту о новом комментарии, нажал на ссылку и сразу увидел комментарий.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, NlCKRUS сказал:

А для Шаблона E-Mail сообщений также можно сделать?

Нет. Письма не выполняют JS скрипты.

Ссылка на сообщение
Поделиться на других сайтах
52 минуты назад, celsoft сказал:

Нет. Письма не выполняют JS скрипты.

Разве нельзя без скрипта? Можно сделать, чтобы при добавлении комментария его id передавался в шаблон письма?

Тогда можно было бы добавить URL #findcomment67037

, где67037 - id коммента.

Или не так все просто? )

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, NlCKRUS сказал:

Разве нельзя без скрипта? Можно сделать, чтобы при добавлении комментария его id передавался в шаблон письма?

Тогда можно было бы добавить URL #findcomment67037

, где67037 - id коммента.

Или не так все просто? )

Нет не все так просто как кажется. А #findcomment67037 это просто перемешение к уже найденному комментарию и найденной странице.

Ссылка на сообщение
Поделиться на других сайтах

Не знаю, предлагали такое или нет, но хочу предложить полезную фичу с новыми тегами. 

Когда пустой custom, особенно если используется в сочетании с days, зачастую оформленный блок под custom остаётся пустой и выделяется лишь заголовок. 

Предложение, внести скрытие блока custom в зависимости от содержимого: 

для тега custom ввести тег name="mycustom" для задания ему персонального идентификатора, ну а дальше всё просто

[custom=mycustom]  оформление блока с custom + custom [/custom]
[not-custom=mycustom] Материалов нет[/not-custom]
 

Ссылка на сообщение
Поделиться на других сайтах
20.11.2023 в 15:36, LekseyDev сказал:

Не знаю, предлагали такое или нет, но хочу предложить полезную фичу с новыми тегами. 

я только что об этом выше 2 раза написал

Ссылка на сообщение
Поделиться на других сайтах
13.11.2023 в 17:33, skapunker сказал:

значит нужно альтернативное решение, в конце конов - главное конечный результат

смысл в том, чтобы не показывать некоторые блоки если определенный custom пустой

[if] там какой нибудь придумать или еще чего

 

20.11.2023 в 15:36, LekseyDev сказал:

Не знаю, предлагали такое или нет, но хочу предложить полезную фичу с новыми тегами. 

Когда пустой custom, особенно если используется в сочетании с days, зачастую оформленный блок под custom остаётся пустой и выделяется лишь заголовок. 

Предложение, внести скрытие блока custom в зависимости от содержимого: 

для тега custom ввести тег name="mycustom" для задания ему персонального идентификатора, ну а дальше всё просто

[custom=mycustom]  оформление блока с custom + custom [/custom]
[not-custom=mycustom] Материалов нет[/not-custom]

Палю тему. Есть блок с кастомом

<section class="sect">
	<h2 class="sect__title">Популярные</h2>
	<div class="sect__content">{custom}</div>
</section>

кастом обязательно в строку с самим блоком sect__content без всяких переносов строк и без пробелов.

Тогда такой css скроет блок при отсутствии новостей у кастом


.sect:has(.sect__content:empty) {display: none;}

 

Изменено пользователем redissx
Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, redissx сказал:

 

Палю тему. Есть блок с кастомом


<section class="sect">
	<h2 class="sect__title">Популярные</h2>
	<div class="sect__content">{custom}</div>
</section>

кастом обязательно в строку с самим блоком sect__content без всяких переносов строк и без пробелов.

Тогда такой css скроет блок при отсутствии новостей у кастом



.sect:has(.sect__content:empty) {display: none;}

 

Красава

Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, alex32 сказал:

Красава

Согласен )) Респект за красивое логическое мышление в вопросе как реализовать то или иное без всяких хлопот и отличная реализация CSS свойств. 

Ссылка на сообщение
Поделиться на других сайтах

Всем привет!

Просьба "допилить" доп. поле Галерея изображений... (вероятно также и музыка, видео)

*Если я добавил, например 100 фоток и по каким-то причинам хочу удалить их (или часть из них), то мне придётся удалять каждую фотку + подтверждение удаления!

**Если я удалю фотки из окна "Загрузка изображений и файлов на сервер", то они физически удаляться, но в доп. поле галерея изображений - останутся пустые иконки (на странице статьи соответственно пустые иконки тоже будут).

1 - Вероятно нужно "допилить", чтобы и из доп. поля удалялись пустые иконки, когда я удалил нужные, либо все фотки из окна "Загрузка изображений и файлов на сервер".

2 - Либо вариант с выделением в доп. поле нужных для удаления / или всех...

Первый вариант, конечно - идеальный! но насколько это возможно...

Спасибо!

Изменено пользователем desart
Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте если есть возможность немного улучшить таблицы. Приходится использовать стили вместо таблиц.

Ситуация следующая:

При создании больших таблиц например, 3- 4 столба, 100 строк. Если содержимое в каждой ячейке делаю по центру,  то таблица "валится". Когда по одному из краёв то нормально.

В таблицах маленького размера этого незаметно. Только в больших.

Изменено пользователем amigas
Ссылка на сообщение
Поделиться на других сайтах
45 минут назад, amigas сказал:

Здравствуйте если есть возможность немного улучшить таблицы. Приходится использовать стили вместо таблиц.

Ситуация следующая:

При создании больших таблиц например, 3- 4 столба, 100 строк. Если содержимое в каждой ячейке делаю по центру,  то таблица "валится". Когда по одному из краёв то нормально.

В таблицах маленького размера этого незаметно. Только в больших.

Какое это имеет отношение к DLE? Визуальное оформление всего, в том числе и таблиц зависит исключительно от шаблона, а не от движков.  И в данном случае вам нужно адаптировать свой шаблон на сайте.

Ссылка на сообщение
Поделиться на других сайтах
26.11.2023 в 20:55, celsoft сказал:

Какое это имеет отношение к DLE? Визуальное оформление всего, в том числе и таблиц зависит исключительно от шаблона, а не от движков.  И в данном случае вам нужно адаптировать свой шаблон на сайте.

Спасибо за подсказку попробую 

Изменено пользователем amigas
Ссылка на сообщение
Поделиться на других сайтах

Как понимаю, если через плагины вносить изменения в файлы из например engine\classes\composer\vendor\..., то это не будет работать? Потому что я внес изменения в файлы через плагин, ничего не произошло, плагин работает, правки не работают

Понимаю, что многим это вовсе не нужно, но через плагины это было бы очень удобно

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, fanera сказал:

Как понимаю, если через плагины вносить изменения в файлы из например engine\classes\composer\vendor\..., то это не будет работать?

Не будет. Папку composer лучше не трогать даже вручную, а функции классов лучше расширять через расширение классов например. Но лучше вобще то что находится там не трогать, а функционал менять именно там где применяются функции из этого набора классов в файлах именно DLE. composer содержит вспомогательные библиотеки а не непосредственный функционал.

Ссылка на сообщение
Поделиться на других сайтах

надо сделать чтобы любой блок из шаблона можно было вставить в новость

и не вручную, а чтобы автоматически вставлялся

Ссылка на сообщение
Поделиться на других сайтах

В комментах к 17 версии, некий товарищ написал, чтобы сделать при загрузке картинки, оставлять два формата, и конвертируемый, и исходник jpeg.

Так как мне закрыто комментирование на сайте, то напишу здесь.

Ни в коем случает такого не надо делать!

Только дождались, что появилось конвертирование и возможность сократить занимаемое место на диске, тут какая то бредовая идея, захламлять диск ещё больше, и якобы для сео.

Если товарищ так считает, то вообще не проблема, сделать модуль и загружать с конвертированием оба формата, и даже в сети есть уже готовые такие решения.

А в DLE нужно оставить как есть, какой выбрал формат, то пусть только он и остаётся.

Ссылка на сообщение
Поделиться на других сайтах

Приветствую всех нормальных! Что за дичь я обнаружил! Почему это до сих не пофиксили?!

1. Где общий рейтинг в профиле? Почему только Рейтинг новостей и комментариев? Зачем это все разделили? Если уж и разделили, то где общий рейтинг?

2. Нельзя вывести в comments.tpl рейтинг пользователя. -Это как такое вообще допустили? Как узнать какой рейтинг у пользователя не переходя в профиль?

Нужен нормальный рейтинг, один! Чтобы суммировался за счет комментариев и публикаций и можно было вывести его в comments.tpl. И в профиле нужен общий рейтинг. Какой рейтинг у меня в итоге? У меня Рейтинг публикаций +140 721, Рейтинг комментариев +6244. А рейтинг то какой в итоге? Калькулятор брать каждому? Я то думаю, что за бред с рейтингом происходит, и ранее тут писал об этом, а мне дичь какую то загнали...

Изменено пользователем weddaan
Ссылка на сообщение
Поделиться на других сайтах

Далее. Продолжаем улучшать CMS по моим рекомендациям, которые целсофт всегда игнорирует, и только спустя 3-5 лет реализовывает, и твердо уверены, что этого не нужно, хотя 98% меня всегда поддерживают, остальные 2% согласны молча.

Нужен новый шаблон на основе custom, чтобы можно было создать страницу или колонку с рейтингом пользователей.

Например, {custom days="30" template="шаблон" available="global" limit="10" sort="ratingcomments" cache="yes"}. -Выведет топ 10 пользователей за 30 дней, которые оставили больше всех комментариев. Но желательно сортировать еще и на основе рейтинга его комментариев, кто больше всего получил плюсиков за определенное время. Так же желательно и антирейтинг сделать.

Далее, в comments.tpl вывести новый тег в котором можно указать текст на основе рейтинга пользователя за месяц, о котором я пишу выше. Если комментарий относится к пользователю, который оставил больше всех комментариев за определенное время, вывести тег типа [topuser-comment]текст[/topuser-comment]. Таким способом мы наконец то введем награды любому пользователю, будем стимулировать на комментарии! Например, пометим его аватарку специальным наградным значком. Но, если он теряет рейтинг и не входит в Топ за 30 дней на основе custom сверху, значок естественно пропадает и [topuser-comment]текст[/topuser-comment] для него не отображается. У пользователя начинается истерия, и он начинает комментировать, чтобы вернуть себе галочку или значок! Так мы поднимает поведенческие факторы, если что! Фиртшейн?

Далее, я уже 100 раз писал и меня поддерживали авторитеты-старейшины на этом форуме, что нужна функция редактирования рейтинга пользователей, новостей, комментариев в админке! Есть индивидуумы, которые накручивают себе рейтинг, или наоборот понижают. Админ должен справедливо вернуть рейтинг, если он так считает или по жалобам очевидно, что кто-то мутит с рейтингом... Он админ! Он король! Он должен всё уметь!

Изменено пользователем weddaan
Ссылка на сообщение
Поделиться на других сайтах
41 минуту назад, weddaan сказал:

2. Нельзя вывести в comments.tpl рейтинг пользователя. -Это как такое вообще допустили? Как узнать какой рейтинг у пользователя не переходя в профиль?

Действительно. Как такое celsoft допустил. Почему он это игнорирует? Бардак. Тоже настаиваю чтобы это обязательно появилось. Да я знаю что чтобы посчитать  рейтинг комментариев пользователя нужно перебрать из базы данных рейтинги комментариев. для 30 комментариев на странице нужно сделать это 30 раз, нужно сделать дополнительных 30 запросов на страницу. Но я требую чтобы это появилось, я требую чтобы меня поддержали все другие пользователи. И я обязательно сделаю это в следующей версии и мне все равно, что ваши сервера "лягут" причем действительно лягут даже выделенные.

Надеюсь вы понимате что все выше написанное это сарказм. Вас не смущает что рейтинга пользователя нет не только в комментариях но нет и в новостях. Странно что вас это возмитило именно для комментариев. Этого нет, потому что если это сделать это дичайшая нагрузка на сервер. Просто невероятная. Это тяжелейшие запросы на каждого пользовтаеля, а сколько комментариев на страницу то столько же и запросов.

И никакие кеши и никакие предварительные сохранения суммированного рейтинга, ничего не спасет, на высоко посещаемый сайт это свалится лавиной тяжеленных расчетов и пересчетов.

30 минут назад, weddaan сказал:

Далее, в comments.tpl вывести новый тег в котором можно указать текст на основе рейтинга пользователя за месяц, о котором я пишу выше. Если комментарий относится к пользователю, который оставил больше всех комментариев за определенное время, вывести тег типа [topuser-comment]текст[/topuser-comment]. Таким способом мы наконец то введем награды любому пользователю, будем стимулировать на комментарии! Например, пометим его аватарку специальным наградным значком. Но, если он теряет рейтинг и не входит в Топ за 30 дней на основе custom сверху, значок естественно пропадает и [topuser-comment]текст[/topuser-comment] для него не отображается. У пользователя начинается истерия, и он начинает комментировать, чтобы вернуть себе галочку или значок! Так мы поднимает поведенческие факторы, если что! Фиртшейн?

Тоже самое что и выше в абзаце.

53 минуты назад, weddaan сказал:

Нужен нормальный рейтинг, один! Чтобы суммировался за счет комментариев и публикаций и можно было вывести его в comments.tpl. И в профиле нужен общий рейтинг. Какой рейтинг у меня в итоге? У меня Рейтинг публикаций +140 721, Рейтинг комментариев +6244. А рейтинг то какой в итоге? Калькулятор брать каждому?

Задам простой вопрос. Зачем? Тот кто взял калькулятор в руки .... с какой целью он его взял. Чтобы что? Хорошо сложил он их и что? Что с этим дальше делать?

Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, celsoft сказал:

Да я знаю что чтобы посчитать  рейтинг комментариев пользователя нужно перебрать из базы данных рейтинги комментариев. для 30 комментариев на странице нужно сделать это 30 раз, нужно сделать дополнительных 30 запросов на страницу.

Данные можно обновлять не сразу, а в раз сутки. Так делают некоторые крупные сайты, миллионники!

Изменено пользователем weddaan
Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, weddaan сказал:

Данные можно обновлять не сразу, а в сутки. Так делают некоторые крупные сайты, миллионники!

Нельзя. Потому что сайты с несколькими сотнями тысяч пользователей будут только сутки обновлять эти данные. И никакие миллионники именно так точно не делают.

Нет хотите конечно делайте, но я умываю руки, я точно добровольно не "положу" сайты своих клиентов. 

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, celsoft сказал:

Задам простой вопрос. Зачем? Тот кто взял калькулятор в руки .... с какой целью он его взял. Чтобы что? Хорошо сложил он их и что? Что с этим дальше делать?

В смысле зачем? А зачем тогда все эти рейтинги новостей и комментариев тогда? Особенно усреднённые цифры какие то, которые получается тоже запросы посылают?

Чтоб пользователю было радостно на душе, что он находится там в топе где-то...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...