Вы не зашли.
Была, но ее удалили
JancoNG, опять же, без примера того, что не работает подсказать невозможно
Дело в парсере переменных вида plugin_
см. templates.class.php
// Special variable {plugin_<NAME>...} ({plugin_ads}, {plugin_ads_var1} for plugin ads) - will be showed only if plugin <NAME> is active
Когда ты вставляешь переменную plugin_tags_keywords, то проверяется включен ли плагин tags, а не как ты ожидаешь tags_keywords. Если не включен, то переменную не отображаем.
Варианты решения - называть плагин без подчеркивания или именовать переменные без специального слова plugin.
Приложи архив, так сложно разобрать проблему.
Запрос надо выполнить в БД любыми средствами.
см. http://ngcms.ru/forum/viewtopic.php?id=1412
Интересующий тебя блок и использованием news_showlist
# personal plugin pages for display all user's bookmarks
function bookmarksPage(){
....
}
register_plugin_page используется для регистрации страницы плагина на сайте.
Последний параметр не нужен - исторически сложилось.
UPDATE ng_news SET content = CONCAT("new data", content ) + в WHERE отобрать нужные новости.
checkLinkAvailable() - проверяет определен ли такой обработчик для плагина
Пока единственно где видел его использование, это в плагине uprofile для совместимости со старой версией. Эта функция ничего не генерирует.
$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']));
generateLink() - генерирует ссылку для любой строки из Управления форматом ссылок
Например для
вызов будет
generateLink('news', 'by.year', array('year' => $params['year']))
Что делает функция locatePluginTemplates? Что за аргументы, и что возвращает?
принимает три главных параметра:
function locatePluginTemplates($tname, $plugin, $localsource = 0, $skin = '', $block = '')
$tname - template names (in string array or single name) - имя шаблона, например lastcomments.tpl - шаблон последних комментариев
$plugin - plugin name - имя плагина
$localSource - определяет где искать этот шаблон, если 0, то в папке с шаблоном сайта, если 1, то в папке с плагином.
Пример вызова
$tpath = locatePluginTemplates(array('lasttweets', 'entries'), 'lasttweets', intval(pluginGetVariable('lasttweets', 'localsource')));
Этим мы говорим - верни-ка нам путь к шаблонам lasttweets.tpl и entries.tpl для плагина lasttweets.
Методы:
Код:
$tpl -> template()
$tpl -> vars()
$output = $tpl -> show()Что каждый из них делает? Вижу это в каждом плагине, но как ими пользоваться - не знаю.
$tpl - экземпляр класса старого шаблонизатора
$tpl -> template('lasttweets', $tpath['lasttweets']);
загрузит файлик шаблона с диска в переменную
$tpl -> vars('lasttweets', array ('vars' => array (
'entries' => $tweets,
'title' => $channel_title,
'link' => $channel_link
)));
Служит для реализации подстановочных переменных. В шаблоне у тебя {link}, ты его в коде динамически сгенерировал, передал в шаблонизатор, он выполнил подстановку.
$tpl -> show('lasttweets') - вернет текст, в котором выполнены все подстановки переменных и который уже можно в браузере показать пользователю
Проверить httpd.conf на наличие
LoadModule rewrite_module modules/mod_rewrite.so
Быстрое наколеночное решение. По хорошему это надо причесывать и добавлять в движок.
/engine/includes/inc/functions.inc.php
function sendEmailMessage($to, $subject, $message, $filename = false, $mail_from = false, $ctype = 'text/html', $smtp = true) {
global $lang, $config;
// Include new PHP mailer class
@include_once root.'includes/classes/phpmailer/class.phpmailer.php';
$mail = new phpmailer;
if($smtp){
$__smtp = array(
"host" => "mail.ayola.net", //smtp сервер
"debug" => 0, //отображение информации дебаггера (0 - нет вообще)
"auth" => true, //сервер требует авторизации
"port" => 25, //порт (по-умолчанию - 25)
"username" => "info@example.ru", //имя пользователя на сервере
"password" => "*****", //пароль
"addreply" => "info@example.ru", //ваш е-mail
"replyto" => "info@example.ru" //e-mail ответа
);
$mail->IsSMTP(); # Sets Mailer to send message using SMTP.
$mail->IsHTML(true);
try {
$mail->CharSet = 'Windows-1251';
$mail->FromName = '[ INFO ]';
$mail->Host = $__smtp['host'];
$mail->SMTPDebug = $__smtp['debug'];
$mail->SMTPAuth = $__smtp['auth'];
$mail->Port = $__smtp['port'];
$mail->Username = $__smtp['username'];
$mail->Password = $__smtp['password'];
$mail->AddReplyTo($__smtp['addreply'], $__smtp['username']);
$mail->AddAddress($to); //кому письмо
$mail->SetFrom($__smtp['addreply'], $__smtp['username']); //от кого (желательно указывать свой реальный e-mail на используемом SMTP сервере
$mail->AddReplyTo($__smtp['addreply'], $__smtp['username']);
$mail->Subject = htmlspecialchars($subject);
$mail->MsgHTML($message);
if (($filename !== false) && (is_file($filename))) {
$mail->AddAttachment($filename);
}
$mail->Send();
# echo "Message sent Ok!</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
return 0;
}
$mail->CharSet = 'Windows-1251';
$mail->FromName = 'NGCMS sender';
$mail->From = (!$mail_from) ? "mailbot@".str_replace("www.", "", $_SERVER['SERVER_NAME']) : $mail_from;
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AddAddress($to, $to);
if (($filename !== false) && (is_file($filename))) {
$mail->AddAttachment($filename);
}
return $mail->Send();
$mail_from = (!$mail_from) ? "mailbot@".str_replace("www.", "", $_SERVER['SERVER_NAME']) : $mail_from;
$uniqid = md5(uniqid(time()));
$headers = 'From: '.$mail_from."\n";
$headers .= 'Reply-to: '.$mail_from."\n";
$headers .= 'Return-Path: '.$mail_from."\n";
$headers .= 'Message-ID: <'.$uniqid.'@'.$_SERVER['SERVER_NAME'].">\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Date: '.gmdate('D, d M Y H:i:s', time())."\n";
$headers .= 'X-Priority: 3'."\n";
$headers .= 'X-MSMail-Priority: Normal'."\n";
$headers .= 'X-Mailer: '.engineName.' : '.engineVersion."\n";
$headers .= 'X-MimeOLE: '.engineName.' : '.engineVersion."\n";
$headers .= 'content-type: multipart/mixed;boundary="----------'.$uniqid.'"'."\n\n";
$headers .= '------------'.$uniqid."\n";
$headers .= 'content-type: '.$ctype.';charset='.$lang['encoding'].''."\n";
$headers .= 'content-transfer-Encoding: 8bit';
if (is_file($filename)){
$file = fopen($filename, 'rb');
$message .= "\n".'------------'.$uniqid."\n";
$message .= 'Content-Type: application/octet-stream;name="'.basename($filename).'"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition: attachment;';
$message .= 'filename="'.basename($filename).'"'."\n\n";
$message .= chunk_split(base64_encode(fread($file, filesize($filename))))."\n";
}
@mail($to, $subject, $message, $headers);
}
А вот перевели отправку почты через class.phpmailer.php
А ведь он умеет и по SMTP работать. Было бы круто реализовать этот запрос http://ngcms.ru/forum/viewtopic.php?id=1136
У меня как раз авторизованная SMTP отправка это единственный способ выслать письмо.
// Готово! как сделать хаком отправку через SMTP http://ngcms.ru/forum/viewtopic.php?pid=32151#p32151 - нужно причесать и в движок, плюс в настройках движка глобально для сайта выбирать метод отправки почты smtp или mail()
А site.notify.tpl получается один на все формы что ли? Это шаблон, который после отправки сообщения отображается.
Knopik, он там подключает {% extends localPath(0) ~ "site.body.tpl" %} тоже нужен ?
И какой выбирать тогда в настройках, который form или body ? Странно что в readme ничего нет.
// да, выбирать типа form
Вообще не могу разобраться как свои шаблоны работают. Какой шаблон из /engine/plugins/feedback/tpl нужно склонировать в /engine/plugins/feedback/tpl/templates ?
Евгений, проблема исправлена в SVN 1046.
Knopik, именно так и исправлена, спасибо
То есть шаблоны в папке с шаблоном сайта хранить нельзя ? Только в plugins ? Не очень удобно.
Всем привет, не был здесь пол года, можете обрисовать в вкратце что происходит, что было сделано, планы на будущее и т.д.
Бывает, система на самом деле отличная с учетом количества людей, которые её писали. Архитектура грамотная
Конкретные предложения или указания на недоработки всегда приветствуются.
vl, ошибки есть какие-то? Пути нигде жестко не прописаны, возможно стандартные функции движка не корректно работают.
Возможно папка Twig называется twig, то есть FTP клиент преобразовал все в нижний регистр.
В acts плагина не указал действие action.ppages.uprofile, потом включить/выключить плагин.
Два ifhandler
\engine\install.php
$charset = $charsetEngine?' default charset=utf8':'';
if ($SUPRESS_CHARSET) { $dbCreateString = str_replace('default charset=utf8','',$dbCreateString); }
Сделай поиск этого текста в Highslide.JS Думаю он там.