Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 Re: Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-27 23:43:59

Всё решено!:cool: То что не заполнялся mainblock - проблема в вызове [font=Courier]_MASTER_URL_PROCESSOR[/font],

JancoNG  пишет:

если перейти в раздел редактирования статей, то в списке статей у некоторых (по ходу без видимой закономерности) не показывается Title - просто пустое место. Там где в шаблоне админки есть entry.title, в то время как другие параметры работают.

а здесь проблема у меня, потому что utf8 и [font=Courier]substr [/font]не контачат, в результате [font=Courier]htmlspecialchars[/font] видела "битую строку " и возвращала пустую.

infinity237  пишет:

Меняется просто на &$arg1 => $arg1

В самом деле никак не просто! Вы этим меня "ввели в заблуждение". Передать ссылки в php 5.3+ можно только при статическом вызове, а при [font=Courier]call_user_func[/font] - подвох получается, надо использовать [font=Courier]call_user_func_array[/font] - всё-таки как я предлагал, иначе никак..
Но в общем помогли, спасибо. smile

#2 Re: Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-25 18:22:37

infinity237 пишет:

Пф... Естественно передача аргументов по ссылке не будет работать в php >= 5.3
Меняется просто на &$arg1 => $arg1

Поискать по всем сорцам вхождения &$ не так уж и сложно.

Спасибо. Вы мне очень помогли. Есть продвижения smile Были вхождения вызова функций с передачей по ссылке в cmodules.php, extras.inc.php Как поставил обычные переменные, движок запустился, даже в админку зашёл. НО! Сайт не работает как надо. Например в админке если перейти в раздел редактирования статей, то в списке статей у некоторых (по ходу без видимой закономерности) не показывается Title - просто пустое место. Там где в шаблоне админки есть entry.title, в то время как другие параметры работают.
При переходе на сайт, только каркас есть: шапка, сайдбар, а основное содержимое - лента новостей - нет, пусто вместо неё. Что может быть, куда копать?

#3 Re: Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-24 21:51:56

Копайте...
Только почему то у большинства все работает, а у вас нет

Да ну. Можете продемонстрировать, как NG 0/9/3 работает? например здесь (PHP 5.5) стоит. Или на хостингере можно.
Файл extras.inc.php, функция exec_acts, вот этот кусок кода:

		foreach($functions as $func) {

			        $tX = $timer->stop(4);

				if ($func['arguments'] == 0) {
					$sth.=call_user_func($func['function']);
				}
				if ($func['arguments'] == 1) {
					$sth.=call_user_func($func['function'],$sth);
				}
				if ($func['arguments'] == 2) {
					$sth.=call_user_func($func['function'],$sth, &$arg1);
				}
				if ($func['arguments'] == 3) {
					$sth.=call_user_func($func['function'],$sth, &$arg1, &$arg2);
				}
				if ($func['arguments'] == 4) {
					$sth.=call_user_func($func['function'],$sth, &$arg1, &$arg2, &$arg3);
				}
				if ($func['arguments'] == 5) {
					$sth.=call_user_func($func['function'],$sth, &$arg1, &$arg2, &$arg3, &$arg4);
				}
				$timer->registerEvent('func EXEC_ACTS ('.$item.'): call function "'.$func['function'].'" ['.$func['arguments'].' params] for '.($timer->stop(4) - $tX)." sec");
			}

Сбой я так понял вызывает call_user_func, а именно когда аргументы по ссылке передаются. Первые 2 случая нет, а последующие - крах. Если вызов заменить например так:

call_user_func_array($func['function'],array($sth, &$arg1));

то есть продвижение, хотя в целом сайт так и не работает. Можно ли так заменить и дальше искать?
Если сравнить с версией 0.9.4, то там этот фрагмент кода вообще сделан просто так:

$output.=call_user_func($func);

т.е. аргументы никакие не разбираются, не передаются.. Но это может компенсировано как-то другими наработками?... Хотелось бы комментарий разработчиков или кто хорошо знает ядро. Спасибо.

#4 Re: Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-24 16:37:42

infinity237  пишет:

В php.ini нужно отключать

Не нужно, т.е. во-первых - это не решение, так как на хостинге никто к этому файлу доступ не даст, во-вторых я отключил, появилось :

Directive 'magic_quotes_gpc' is no longer available in PHP in Unknown on line 0

Потом:

Directive 'register_long_arrays' is no longer available in PHP in Unknown on line 0

А потом то что в начале - ошибок больше нет и белая страница. php.ini тут ни при чём. Если бы проблема была в нём, то другие движки тоже не работали бы, но WP успешно работает, да и не может же на всех хостингах быть "плохой" php.ini Копать надо где-то в движке, но где?...
=======
Так, в файле core.php идёт процесс до

@include_once root.'includes/inc/extras.inc.php';

После этой строчки - всё, гаплык! Пока столько накопал.

#5 Re: Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-22 19:50:11

А где последнюю версию 0.9.3 1147 скачать? Что-то не могу найти. На странице загрузки SVN880, такая как у меня.
Поставил на Денвер PHP 5.4.31, включил логи: при загрузке белая страница, а в логах вот такое:

[22-Oct-2015 15:38:10 UTC] PHP Fatal error:  Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0

[22-Oct-2015 15:38:13 UTC] PHP Fatal error:  Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0

В .htaccess эта директива закомментирована, т.е. не может быть причиной. Есть там в install.php что-то об этом.
Пробовал закомментить вот это:

	foreach (array('allow_call_time_pass_reference') as $flag) {
		$tvars['vars']['flag:'.$flag]     = ini_get($flag)?'Включено':'<font color="red">Отключено</font>';
		if (!ini_get($flag)) { $warning++; }
	}

В error.log больше ничего не пишет, но страница всё равно пустая белая sad

#6 Re: Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-22 17:54:20

Спасибо за ответы.

infinity237 пишет:

По первому случаю - что в логах? Пусто там не может быть.
По второму случаю - нужно смотреть chmod'ы и вообще установлен ли плагин auth_basic.

Так в том то и дело, что логи я смотреть не могу на хостинге - нет их.
Плагин auth_basic стоит, активен ли - не знаю, потому что войти надо. шмоды - такие же как везде стандартные 755 или 775.

Версия 0.9.3 работает на PHP 5.2, а ее последние оновления (вроде с SVN1178+) на 5.3

У меня 880 вроде. Надо покопать эту сборку, правда снова придётся в utf8 переделывать sad

#7 Вопросы функционирования системы в целом » Помогите запустить версию 0.9.3 на PHP 5.3+ » 2015-10-21 22:39:38

JancoNG
Ответов: 13

Версия 0.9.3 работает на PHP 5.2 но на 5.3 не хочет запускаться - белый экран. Включал вывод ошибок - ничего не выводит только пустая белая страница. Кто может подсказать в чём несовместимость, может немного подправить надо? 0.9.4 наполовину запускается на 5.5 -пишет: Fatal error: no auth module found (плагин стоит). Я просто боюсь, что если как то перенесу на новую версию, то хостинги разные - если PHP попадется 5.2, то 0.9.4 на нём работать не будет, а если 5.3 то 0.9.3 не работает. Не каждый хостинг даёт версию выбрать. Вот я и хотел подправить, может бы 0.9.3 как-то с PHP 5.3 удалось совместить?

#8 Обсуждение шаблонной системы » Определить номер страницы » 2014-09-16 22:51:58

JancoNG
Ответов: 5

Здравствуйте. Нужно определить выводится ли список статей на странице с номером, т.е. задействована ли постраничная навигация. [ifhandler:news:main] и дальше мне надо проверить задан ли номер страницы {page} или нахожусь на главной. Можно ли такое сделать?

#9 Re: Тестирование версий » NGCMS версии 0.9.3 + SVN -> 0.9.4 » 2013-04-23 20:43:25

Не знаю стоило ли открывать отдельную тему. Решил здесь написать.
Есть предложение к усовершенствованию плагина comments. Дело в том, что комментарий при добавлении сохраняется в базе данных в виде BBCode, а при каждом выводе идёт преобразование его в HTML-вид для вывода на сайте через

$parse->bbcodes(...);

Считаю это нерационально. А произвести разбор ББ кодов при добавлении комментария, и таким образом хранить их в БД в HTML, и выводить без всяких приготовлений.
Строку в comments.add.php

$SQL['text']	=	secure_html(convert(trim($_POST['content'])));

заменить на:

$SQL['text'] = $parse->bbcodes(secure_html(trim($_POST['content'])));

а из comments.show.php убрать вызовы:

if ($config['use_bbcodes'])			{ $text = $parse -> bbcodes($text); }

#10 Re: "А как сделать..." » Как закрыть » 2013-04-23 20:24:23

Насколько знаю Опера комментарии не смотрит. Поэтому через Javascript, проверив условие:

if(window.opera) {
x=document.getElementById("some_cool_div");
x=x.parentNode.removeChild(x);
}

Или я не понял вопроса...

#11 Re: "А как сделать..." » Как написать плагин? » 2013-03-13 18:39:30

Knopik, спасибо, но там как понимаю только регистрируется добавочный элемент для настройки ЧПУ. До этого этапа у меня получается - адрес назначаю. Дело в том, что тот адрес который я указываю на странице ЧПУ не работает.
irbees2008 наверно это:

add_act('admin_header', 'tblank');

#12 Re: "А как сделать..." » Как написать плагин? » 2013-03-12 23:24:18

Ну а как я пример дам? Это весь сайт с установленным плагином и своими настройками. Мне нужно просто ЧПУ настроить для моего плагина.
Вот пример, как делать для gsmg. И для gsmg это тметод работает, а когда я таким же способом задаю URL для своего плагина, выдаётся ошибка 404, а не та страница.

#13 Re: "А как сделать..." » Как написать плагин? » 2013-03-12 00:23:31

Wolverine пишет:

Дело в парсере переменных вида plugin_

Спасибо. В шаблоне убрал plugin_ заработало! smile Никогда бы не подумал, что подчеркивание может быть причиной..
Так, вроде теперь все пашет как я хотел, но с УРЛами проблемы.
Вобщем у меня есть страница плагина. Теперь имеет вид:

/plugins/tags_keywords/?tag=something

и работает.
Я хочу сделать, чтобы было более короткое, типа:

/tags/?tag=something

и никак не работает.
Здесь на форуме нашел пример для gsmg чтобы в urlconf.php добавить строчки и можно настроить в админке свой адрес. Для него работает.
А я также сделал для своего плагина - и ошибка 404, я уже переносил в списке выше, как раньше решал такую проблему, но всё безрезультатно.

#15 Re: "А как сделать..." » Как написать плагин? » 2013-03-09 19:18:13

Ещё раз благодарю за помощь, но ещё раз вынужден просить.
Написал я как-то первую версию своего плагина, добился лишь того, что на сайте не выбивает ошибок php, плагин нифига не хочет работать. причём даже не сама логика, а вообще не интегрируется что-ли.
Дело такое:
В шаблон news.full ставлю

[isplugin plugin_name]{plugin_name}[/isplugin]

Надо отметить, что условие срабатывает, но вместо {plugin_name} постоянно выдаётся пустая строка.
В самом коде плагина я написал самое элементарное:

class TKNewsFilter extends NewsFilter {
        function showNews($newsID, $SQLnews, &$tvars,$mode = array()) {
        global $tpl;

	$tvars['vars']['plugin_name'] = "Плагин";
}
}
register_filter('news','plugin_name', new TKNewsFilter);

Т.е. без всяких шаблонов и запросов, просто вывести статический текст на месте плагина. А выводит ровно NULL sad
Почему не работает, можете подсказать куда копать? Смотрел в других плагинах - код аналогичный и работают а мой нет...

#16 Re: "А как сделать..." » Как написать плагин? » 2013-03-04 19:54:56

Спасибо. Требуется выполнить такую задачу: вывести на странице плагина на сайте список новостей в короткой форме, соответствующих некоторому критерию.
Я так понял, что надо использовать наилучше будет функцию news_showlist(). Её можно в плагине использовать? Нужны ли load_extras или что-то в этом роде? И она строку возвращает сформированную по шаблону news.short.tpl?
В каком формате надо задать первый параметр? Это должен быть массив, но какой... У меня условие SQL

WHERE $var IN `column_name`

Или я на ложном пути, так не пойдёт?

#17 Re: "А как сделать..." » Как написать плагин? » 2013-03-03 18:28:31

Wolverine пишет:
$alink = checkLinkAvailable('uprofile', 'show')?
						generateLink('uprofile', 'show', array('name' => $row['uname'], 'id' => $row['uid'])):
						generateLink('core', 'plugin', array('plugin' => 'uprofile', 'handler' => 'show'), array('name' => $row['uname'], 'id' => $row['uid']));

Спасибо, кстати я заметил, что точно такой код используется в функции generatePluginLink - т.е. надо наверно её использовать вместо этой конструкции?
Ещё есть вопрос по функции register_plugin_page() - она в админке страницу для плагина делает или на сайте, или вообще что-то другое?
И в реализации последний параметр почему-то не используется. Зачем он тогда нужен?

#18 Re: "А как сделать..." » Как написать плагин? » 2013-02-26 17:22:09

Wolverine, огромное спасибо. Уже прояснилось намного smile
Ещё эти функции мутными остаются:
checkLinkAvailable()
generateLink()

Из названия предполагаю, что они генерируют ссылки, только как ими правильно пользоваться и ссылка уже в виде тэга или только адрес получается?
И ещё такой вопрос: как выделить для плагина свою страницу, чтобы он имел свой ЧПУ (как архивы), и как генерировать ссылки на эти его страницы?
Спасибо.

#19 "А как сделать..." » Как написать плагин? » 2013-02-25 18:00:26

JancoNG
Ответов: 22

Вопрос на первый взгляд нелепый, но нехватает документации. В вики примеры есть, но что конкретно делает каждая инструкция неясно.
Поэтому здесь хочу задавать конкретные вопросы, что мне не ясно, чтобы написать свой плагин. Прошу тех, кто знает, помочь разобраться в этой всей структуре.
  Итак первые вопросы:
Что делает функция locatePluginTemplates? Что за аргументы, и что возвращает?
Методы:

$tpl -> template()
$tpl -> vars()
$output = $tpl -> show()

Что каждый из них делает? Вижу это в каждом плагине, но как ими пользоваться - не знаю.

#20 Re: "А как сделать..." » Вот вопрос возник » 2013-02-23 19:36:21

qmas пишет:

Ну скажите как сделать

сбросить все -transform:
.menu a {
-webkit-transform:none
...
}

#21 Re: "А как сделать..." » Определить тип текущей страницы » 2013-02-21 19:15:39

Вот такое сработало:
[ifhandler:news:news][/ifhandler]
Правда с аргументами сложновато hmm

#22 Re: "А как сделать..." » Определить тип текущей страницы » 2013-02-21 18:07:44

Спасибо, то что надо smile А можно ещё пнуть меня в документацию по ТВИГУ? На той странице только примеры, а список всех доступных функций, тэгов и аргументов? Конкретно для NGCMS.
UPD:
У меня это не работает, тупо выводится символами. Если заключаю в [TWIG][/TWIG] = то же самое - выводится текст, а не обрабатывается.
Версия: ng_093_Release_cs880-fix01

#23 "А как сделать..." » Определить тип текущей страницы » 2013-02-20 18:14:53

JancoNG
Ответов: 3

Здравствуйте.
Подскажите как можно определить тип текущей страницы, которая загружается в шаблоне? например: выводится ли архив, или статическая страница, или пост.
Смотрел Вики по переменным - ничего такого нет.
Мне нужно что-то наподобие Вордпрессовских is_category() и т.п.
Нужно для того, чтобы вставлять разный контент в зависимости от текущей страницы. Например на странице с тэгами или архивом вставить robots="noindex"

#24 Re: Страницы плагинов » same_category_news :: Новости из категории » 2013-02-20 17:52:29

infinity237 пишет:

Вы были невнимательны при регистрации на форуме, в следствие чего не поставили галочку в нужном месте  (проверка на спам-бота-робота).
Рекомендуется зарегистироваться снова.

Ставил я галочку, почему не засчитало не знаю. Зарегил новый аккаунт - работает. Спасибо за помощь.

Подвал раздела

Работает на FluxBB