Чтение RSS каналов

Форум

Открыть Ответить

SLAED CMS 6.2 Pro - Проблемы и решения

191
27.06.2019 18:12:3827.06.2019 18:13:06
Рекомендую использовать данную опцию только на проектах где не предусмотрена какая либо публикация материалов, комментариев, новостей и т.д. анонимными посетителями и зарегистрированными пользователями. В противном случае, как вы уже заметили, будет жёсткая фильтрация.

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

3.24
192
08.08.2019 11:35:54
При переходе на php 7.2 в логи начали падать ошибки. Суть их в устаревшей функции, которая пока работает, но лучше от неё избавиться.
Вот строка из лога: DEPRECATED: Function create_function() is deprecated Line: 40 in file /var/www/*********.ru/templates/admin/index.php

Вот в этой функции прячется устаревшая функция:
function tpl_block() {
	global $blockg, $theme, $conf;
	$arg = func_get_args();
	$lan = array(_OPCL);
	static $cach;
	if (!isset($cach)) $cach = create_function("\$arg, \$lan", "global \$blockg, \$theme, \$conf; return \"".addslashes(file_get_contents(get_theme_file("block-left")))."\";");
	return $cach($arg, $lan);
}


Решение кроется в использовании анонимной функции, но моих знаний пока не хватает, что решить проблему. Еще не дошел до изучения замыканий. Прошу помочь.


Версия системы: SLAED CMS 6.* Pro
Версия PHP: 7
3.98

3.98
193
12.08.2019 13:01:00
Пытаюсь сам решить проблему. Переписал функцию системы tpl_block, добавив в неё анонимную функцию. Получилось так:
function tpl_block() {
	global $blockg, $theme, $conf;
	$arg = func_get_args();
	$lan = array(_OPCL);
	static $cach;
	if (!isset($cach)) {
		$cach = function($arg, $lan) {
			global $blockg, $theme, $conf;
			return addslashes(file_get_contents(get_theme_file("block-left")));
		};
	}
	return $cach($arg, $lan);
}


Никаких ошибок, нотайсов или ворнингов этот код не вызвал. Но и работать он отказывается. Вместо блоков в админке, выводятся названия переменных:
$arg[1]
$arg[2]


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

В общем, по прежнему нуждаюсь в помощи
3.98

3.98
194
12.08.2019 17:58:07
Начиная с версии PHP 7.2 функция create_function является устаревшей.
Одним из решений являться откат на более раннюю версию PHP.

В новой версии CMS этот вопрос будет решён, представляю вашему вниманию новую функцию работы блоков.

# Set template of block
if (!function_exists('setTemplateBlock')) {
	function setTemplateBlock($tpl, $val = '') {
		global $theme, $conf, $pos, $blockfile, $b_id, $home;
		if ($pos == 's' || $pos == 'o') {
			$bname = empty($blockfile) ? 'fly-block-'.$b_id : 'fly-'.str_replace('.php', '', $blockfile);
		} else {
			$bname = empty($blockfile) ? 'block-'.$b_id : str_replace('.php', '', $blockfile);
		}
		$file = 'templates/'.$theme.'/'.$bname.'.html';
		$file = file_exists($file) ? $file : false;
		if ($file) {
			static $argc, $cach;
			if ($argc != $file || !isset($cach)) {
				$argc = $file;
				$cach = file_get_contents($argc);
			}
		} else {
			switch($pos) {
				case 'l':
				$bname ='block-left';
				break;
				case 'r':
				$bname ='block-right';
				break;
				case 'c':
				$bname ='block-center';
				break;
				case 'd':
				$bname ='block-down';
				break;
				case 's':
				$bname ='block-fly';
				break;
				case 'o':
				$bname ='block-fly';
				break;
				default:
				$bname ='block-all';
				break;
			}
			$file = getThemeFile($bname);
			if ($file) {
				static $argc, $cach;
				if ($argc != $file || !isset($cach)) {
					$argc = $file;
					$cach = file_get_contents($argc);
				}
			} else {
				$file = getThemeFile('block-all');
				if ($file) {
					static $argc, $cach;
					if ($argc != $file || !isset($cach)) {
						$argc = $file;
						$cach = file_get_contents($argc);
					}
				} else {
					$cach = '<fieldset><legend>{%title%}</legend>{%content%}</fieldset>';
				}
			}
		}
		# Associative array of values passed to the template
		$value = array('{%theme%}' => $theme);
		$value = is_array($val) ? array_merge($value, $val) : $value;
		return str_replace(array_keys($value), array_values($value), $cach);
	}
}

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

3.24
195
20.08.2019 07:18:5720.08.2019 07:21:19
Ого ого огогошечки.
Вот это функция - разрослась не на шутку).
В принципе, в ней всё более-менее понятно, но терзает вопрос по вот этой конструкции:
$cach = '<fieldset><legend>{%title%}</legend>{%content%}</fieldset>';

Почему не обернуть просто в див или в див с css-классами? А лучше конечно, что бы оформления в коде не было вообще.
4.4

4.4
196
20.08.2019 19:13:0420.08.2019 19:13:49
olevpa, по объёму кода функция увеличилась незначительно: старая функция 60 строк, новая функция 66 строк. Зато по функционалу существенно.

В принципе, в ней всё более-менее понятно, но терзает вопрос по вот этой конструкции:

$cach = '<fieldset><legend>{%title%}</legend>{%content%}</fieldset>';

Почему не обернуть просто в див или в див с css-классами? А лучше конечно, что бы оформления в коде не было вообще.


Это на случай отсутствия файла оформления блока в шаблонах темы.
Подробнее по новому функционалу писал в данной теме.

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

3.24
197
21.08.2019 09:31:3422.08.2019 21:18:27
Понятно, благодарю за ответ!
Другой вопрос. У меня что-то не получается добавить блок оплаты. Не пойму почему, может кто подскажет?
Добавить блок оплаты

В файле function/user.php добавил в навигацию
$title[] = "Оплата";
	$ititle[] = "Оплата";
	$link[] = 'index.php?name=account&amp;op=pay';
	$img[] = 'account/pay.png';


В модуле account добавил функцию
function pay(){
	global $prefix, $db, $user, $conf;
		head(" Оплата");
        $cont=tpl_eval("title", "Оплата");  
        echo $cont;        
        foot();               
}


Добавил в конструкции switch($op) case случай:
case "pay": 
        pay();
        break;   


И в конфиге config_rewrite.php так как используется чпу:
	$out[] = $val."-pay.html";
	$in[] = "'(?<!/)index.php\?name=".$val."&(amp;)?op=pay'";


При нажатии перепрыгивает на начальную страницу модуля аккаунт.


Версия системы: SLAED CMS 6.* Pro
Версия PHP: 7
Сервер: Сервер в интернете
4.4

4.4
198
21.08.2019 12:27:4522.08.2019 21:12:44
Разобрался!
Забыл добавить в основной файл .htaccess код
RewriteRule ^([a-zA-Z0-9_]+)-pay.html$ index.php?name=$1&op=pay [NC]
4.4

4.4
199
15.10.2019 21:27:24
Насколько простой и понятной была когда то для меня версия Lite 2.6, настолько непонятной и неудобной стала 6.2 версия.

При написании шаблона не могу понять где находятся стили, описывающие теги H1..H6, в файле theme.css они то есть, но как их прописать к примеру в заголовке статьи или новостей и т.д. По умолчанию в слайде используется почему то только один тег h3 в названиях


Версия системы: SLAED CMS 6.* Pro
Версия PHP: 7
Сервер: Сервер в интернете
0

0
200
16.10.2019 22:20:41
Andrey-z, учитывайте тот факт что версия SLAED CMS 2.6 Lite вышла 01.07.2008. С этого времени утекло много воды, система постоянно модифицировалась.

В последних версиях я постарался по максимуму (на сколько это было целесообразно) вынести все компоненты оформления и графику непосредственно в тему оформления CMS. Да, вам придётся немного перестроится, но это, на мой взгляд, положительные изменения которые в итоге упростят жизнь дизайнерам и верстальщикам.

Рекомендую воспользоваться документацией, там описаны все основные нюансы касательно тем оформления системы. Посмотрите данную инструкцию, надеюсь она поможет вам реализовать задуманное.

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

3.24
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь