Вы не зашли.
Пользователи с кириллическими логинами не работают напрочь http://legend.zxs.ru/users/Данил/, может посмотреть в сторону punBB и брать id (http://legend.zxs.ru/forum/user/401/ - тот же Данил)? Зы, использую плагин auth_punbb, работает нормально на новой версии. Регистрацию и восстановление пароля произвожу через функционал форума. Предлагаю включить данный плагин в релиз, очень удобная и полезная штуковина
Для SEO вешайте ссылки на NGCMS От этого уже вес будет, а особенно если у вас домены старые и ТиЦ жирный
То сегодня у разработчика самой лучшей NGcms день рождения, Виталию исполняется 30 лет!!!
От имени меня и еще некоторых пользователей NGcms поздравляю со столь знаменательным днем!! Такой юбилей бывает только раз в жизни, так же хочу пожелать самых больших успехов в развитии проекта и разумеется крепкого здоровья, что-бы продолжал вести свою благую миссию
А еще много денек, самую дорогую машину и самых красивых девочек И вообще всего самого лучшего!
Плагин комментариев:
Предлагаю для удобства очистки комментариев в интерфейсе вместо сообщений с предложением вернуться обратно выводить header ("Location: $url");
Так же предлагаю добавить в админку возможность включения режима "анонимного гостя". Такой режим может быть полезен тем, кому наплевать на имя комментируемого и его емэйл. У себя я реализовал это следующим образом:
comments.add.php
// Check membership - комментируем
// if ($_POST['name'] && $_POST['password']) {
// $auth = $AUTH_METHOD[$config['auth_module']];
// $user = $auth->login(0, $_POST['name'], $_POST['password']);
// if (!is_array($user)) {
// msg(array("type" => "error", "text" => $lang['comments:err.password']));
// return;
// }
// }
// Entered data have higher priority then login data - кое что комметируем и добавляем лангвич, который будет означать "Гость":
$SQL['author'] = $lang['guest'];//secure_html(convert(trim($_POST['name'])));
// $SQL['mail'] = secure_html(trim($_POST['mail']));
// If user is not logged, make some additional tests - комментируем проверку:
// if (!$SQL['author']) {
// msg(array("type" => "error", "text" => $lang['comments:err.name']));
// return;
// }
// if (!$SQL['mail']) {
// msg(array("type" => "error", "text" => $lang['comments:err.mail']));
// return;
// }
// Check if author name use incorrect symbols. Check should be done only for unregs
// if ((!$SQL['author_id']) && (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/", $SQL['author']) || strlen($SQL['author']) > 60)) {
// msg(array("type" => "error", "text" => $lang['comments:err.badname']));
// return;
// }
// if (strlen($SQL['mail']) > 70 || !preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $SQL['mail'])) {
// msg(array("type" => "error", "text" => $lang['comments:err.badmail']));
// return;
// }
// Check if guest wants to use email of already registered user
// if (pluginGetVariable('comments', 'guest_edup_lock')) {
// if (is_array($mysql->record("select * from ".uprefix."_users where mail = ".db_squote($SQL['mail'])." limit 1"))) {
// msg(array("type" => "error", "text" => $lang['comments:err.edupmail']));
// return;
// }
// }
comments.ini
guest = "Гость"
И мне не нравится вопрос whois, лично я его заменил на IP, если кому надо:
comments.show.php 150 строчку заменить на
$tvars['vars']['ip'] = "IP: <a href=\"http://www.nic.ru/whois/?ip=$row[ip]\">".$row[ip]."</a>";
Еще было бы клево вместо окна редактирования комментариев открывать алерт для ввода текста, который оставлял бы реальный ответ. И кнопочку "Удалить комментарий" для модераторов, по которой он не удалялся бы полностью, а на его месте появлялась надпись "удалено модератором таким-то", но что-бы исходный текст был виден администратору и (или без и) модератору.
Еще подкину идею по аяксовым комментариям: http://fullajax.ru/,
таким образом можно:
а) выводить нормальные постраничные комментарии без потери индекса поисковиками
б) давать ссылку на нужную страничку комментариев, ссылки выглядеть будут так: site.ru/coments/#:page3 или без слэша.
в) В перспективе можно будет на такой основе реализовывать аяксовые плагины, такими могут быть фотогалерея например и еще что-нибудь.
Вам просто цены не будет - если реализуете!
А так же! Можно ли запретить журналисту редактировать свои новости после публикации?
functions.inc.php
Пожалуйста, уберите из 223 строчки кода вывод " ", мешает настраивать стили вывода смайликов.
И заметки в статистике панели администратора не сохраняются..
===
Чат - не работает вывод на главную страничку..., так же утеряно обновление чата для бб кодов..
Пока это всё, что меня смущает (за исключением общеизвестных недостатков.)
А хотя нет, странички плагинов - было бы клево уметь задавать им свои ЧПУ настройки. И поиск что-бы фильтровал текст от огромных статей (ограничивал вывод результатов до 1000-1500 символов) и от флеш объектов..
++фотогалерею бы аяксовую.. )
И хочу выразить огромную благодарность за проделанную работу! NGcms действительно лучшая.
Вопрос с бб кодами снова открылся
Файл который был предложен для загрузки - недоступен.
На мой взгляд чат всем хорош, но не работает переменная вывода чата на главную (SVN [SVN547] с последними фиксами чата.)
Так же было бы клево иметь возможность удалять сообщения и прикрутить капчу для гостей.
Краткая новость работает, а полная - по прежнему пустая страница
перенесите в папку шаблон comments.internal.tpl
mittus, очень инетерсный вариант подключения внешних файлов.
Какой период обнолвения кэша скрипта? И где можно самому настроить интервал обновления кэша?
И есть ли альтернативы Jquery весом поменьше, чтобы выполнить такое же подключение внешних файлов? Jquery Minified на данный момент весит 70 кб. А подключать его ради пару файлов для меня не совсем хороший вариант.
Подключайте Jquery с яндекса, <script type="text/javascript" src="http://yandex.st/jquery/1.4.2/jquery.min.js"></script>
таким образом будет экономиться как и запрос, так и скорость загрузки. И так же есть вероятность того, что эта библиотека уже будет закеширована браузером посетителя, т.к. данный способ используют многие веб-ресурсы.
я на эту сменил
http://legend.zxs.ru/news/2010/02/01/tehnicheskie_raboty_na_saite/
извиняюсь за ссылку, скрин делать некогда
RMC, я статику с перенаправлением использую. Тобешь ссылка на новость меня не устроит там Тоже думал так сделать.
Trashcka, нашел одну тему, но решением проблемы там и не пахнет
http://ngcms.ru/forum/viewtopic.php?id=593
Человека интересовал тот же вопрос, что и меня.
Amarelius, большое спасибо!
Проблема решена, а возникла она по причине того, что я менял в настройках ЧПУ страничку плагина (из /plugin/{plugin}/[{handler}/] вырезал /plugin), т.к. смущала ссылка на форму обратной связи..)
Если нужно, готов выслать логин и пароль от админки в ЛС
Итак, был установлен плагин перенаправления статических страничек, всё нормально работало.
Я сделал следующее:
1. добавил 9 статических страничек подряд
2. зашел в настройки плагина, дал им имена (некоторым из нескольких слов)
3. зашел в ЧПУ, добавил их все, задал им ссылки.
4. и вот результат: везде(!!!) кроме главной странички я вижу следующее:
Ошибка: Вызываемый метод недоступен для плагина 'search'
Ошибка: Вызываемый метод недоступен для плагина 'news'
Откатил все настройки назад, удалив всё от плагина из ЧПУ, отключив вообще плагин, удалив все статические странички и всё та же ошибка.
Тобешь насколько я понимаю - вылечить это можно переустановив движку по-новой.. ?
Версия SVN последняя, хаков не делал никаких
Возможно ли пофиксить?
Есть есть уже готовые хаки, то заранее извиняюсь за тему, в поиске ничего не нашел про индексацию поисковиком статических страничек..
Статическую страничку вида http//site.ru/my_page/ ?
Включаю в настройках ЧПУ, но в таком случае категории и новости перестают работать...
Либо как вариант, можно ли из категории сделать статику?
И еще вопрос, содержимое статической странички ведь индексируется поиском на сайте?
Спасибо
1. Подключите библиотеку Jquery, скачать можно тут: jquery.com
в main.tpl перед </head> вставляем нашу библиотеку:
<script src="http://.../jquery.js" type="text/javascript"></script>
2. Перед </body> будем вставлять яваскрипт:
<script type="text/javascript">
function show_test() // задаем название функции
{
$.ajax({
url: "ссылка_на_файл", // ссылка на подключаемый документ
cache: false, // можно переключить на true, если подключаемый контент статичен
success: function(html){
$("#test").html(html); // задаем идентификатор, #ваш_id, который должен быть присвоен нужному div блоку
}
});
}
$(document).ready(function(){ // когда страничка полностью загрузится
show_test(); // вызываем фнашу функцию с подключением документа
});
</script>
3. В том месте, куда будем подключать внешний документ вставляем контейнер с идентификатором <div id="test"></div>
Подключать таким образом можно php скрипты, html, txt итд.
Таким образом можно подключать сколько угодно внешних файлов в main.tpl
Кстати у внешних файлов подключаемых таким образом может быть какая угодно кодировка, правило windows-1251 из head для них не действует. Так же внутри таких блоков будет работать css, который подключен в main.tpl. Функция success делает возможность обработки dom "на лету", т.е. ява скрипты тоже должны работать. Я не проверял, но вроде в скрипте всё правильно прописано. Если будут проблемы, то ява скрипты подключаем к импортируемому файлу, в таком случае dom всё будет улавливать со 100% вероятностью )
Евгений, кстати, открой свой сайт в IE7
Новости за год - очень удобно.
Вопрос таков - новости за месяц (т.е. ссылки вида /2010/03/) возможно как-то организовать? И по числам тоже чтобы работало..
Я использую вывод новостей такой: /2010/01/29/bla_bla/, без отображения категорий.
Описание
Форма отображается при наведении на нее курсором мыши, в моей версии можно выбрать 18 цветов шрифта. Постарался сделать её предельно адаптированно под движку, чтобы Виталик добавил её в SVN. Проверенно мной работает без глюков в IE7, FireFox и в опере последних версий.
К сообщению прикреплен скрин, где вы можете посмотреть результат.
Установка
1. Открываем файл ..../engine/skins/default/tpl/qt_news.tpl
В самом верху страницы добавляем
<script type="text/javascript">
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
window.onload=startList;
</script>
<style>
#tags {display:block; padding:0;}
#tags ul {margin:0;}
#tags li {display:inline;}
#tags li#nav {position:relative;}
#tags li#nav ul {position:absolute;display:none;background:#FFF;width:108px;padding:2px;border:1px solid #CCC;height:54px;text-align:left;top:16px;right:-90px;}
#tags li#nav:hover ul li a{height:16px;width:16px;float:left;margin:1px;}
#tags li#nav:hover ul li a:hover{border:1px solid #eee;margin:0;}
#tags li#nav:hover ul {display:block;}
</style>
Далее берем все ссылки в список <ul>, т.е. выглядеть должно примерно так:
<ul>
<li>
<a onclick="insertext('[b]','[/b]', {area})" title='{l_tags.bold}'><img src="{skins_url}/tags/bold.gif" height="16" width="16" alt="{l_tags.bold}" /></a>
</li>
<li>
<a onclick="insertext('[u]','[/u]', {area})" title='{l_tags.underline}'><img src="{skins_url}/tags/underline.gif" width="16" height="16" alt="{l_tags.underline}" /></a>
</li>
.........
</ul>
Картинки, которые будут встречаться по-пути оставляем между тегами </li><li> так, чтобы они не входили в список.
<img src="{skins_url}/tags/sep.gif" width="1" height="16" alt="" />
Должно получиться
</li><img src="{skins_url}/tags/sep.gif" width="1" height="16" alt="" /><li>
Когда подошли к концу, увидели тег </div> и вставили перед ним </ul>, копируем следующий фрагмент кода и вставляем его перед тегом </ul>
<li id="nav"><a onclick="insertext('[color=]','[/color]', {area})" title='{l_tags.color}'><img src="{skins_url}/tags/color.gif" hspace="5" vspace="5" alt="{l_tags.color}" /></a>
<ul>
<li><a onclick="insertext('[color=#ff0000]','[/color]', {area})" style="background:#ff0000" title='{l_tags.color_red}'></a></li>
<li><a onclick="insertext('[color=#a0af20]','[/color]', {area})" style="background:#a0af20" title='{l_tags.color_ogold}'></a></li>
<li><a onclick="insertext('[color=#6666cc]','[/color]', {area})" style="background:#6666cc" title='{l_tags.color_rblue}'></a></li>
<li><a onclick="insertext('[color=#b06a00]','[/color]', {area})" style="background:#b06a00" title='{l_tags.color_ohra}'></a></li>
<li><a onclick="insertext('[color=#269088]','[/color]', {area})" style="background:#269088" title='{l_tags.color_teal}'></a></li>
<li><a onclick="insertext('[color=#5c832f]','[/color]', {area})" style="background:#5c832f" title='{l_tags.color_odrab}'></a></li>
<li><a onclick="insertext('[color=#842b61]','[/color]', {area})" style="background:#842b61" title='{l_tags.color_mauve}'></a></li>
<li><a onclick="insertext('[color=#000080]','[/color]', {area})" style="background:#000080" title='{l_tags.color_nblue}'></a></li>
<li><a onclick="insertext('[color=#808080]','[/color]', {area})" style="background:#808080" title='{l_tags.color_gray}'></a></li>
<li><a onclick="insertext('[color=#0f79d3]','[/color]', {area})" style="background:#0f79d3" title='{l_tags.color_kblue}'></a></li>
<li><a onclick="insertext('[color=#d85e23]','[/color]', {area})" style="background:#d85e23" title='{l_tags.color_boran}'></a></li>
<li><a onclick="insertext('[color=#007000]','[/color]', {area})" style="background:#007000" title='{l_tags.color_grass}'></a></li>
<li><a onclick="insertext('[color=#b00000]','[/color]', {area})" style="background:#b00000" title='{l_tags.color_bfur}'></a></li>
<li><a onclick="insertext('[color=#7b5f43]','[/color]', {area})" style="background:#7b5f43" title='{l_tags.color_pbrou}'></a></li>
<li><a onclick="insertext('[color=#eeae40]','[/color]', {area})" style="background:#eeae40" title='{l_tags.color_grod}'></a></li>
<li><a onclick="insertext('[color=#000000]','[/color]', {area})" style="background:#000000" title='{l_tags.color_black}'></a></li>
<li><a onclick="insertext('[color=#ffffff]','[/color]', {area})" style="background:#ffffff" title='{l_tags.color_white}'></a></li>
<li><a onclick="insertext('[color=#ffc0cb]','[/color]', {area})" style="background:#ffc0cb" title='{l_tags.color_pink}'></a></li>
</ul>
</li>
2. открываем файл ..../engine/lang/russian/common.ini
Вставляем туда следующие переменные:
tags.color_red = "Red"
tags.color_ogold = "Old Gold"
tags.color_rblue = "Royal Blue"
tags.color_ohra = "Ohra"
tags.color_teal = "Teal"
tags.color_odrab = "Olive Drab"
tags.color_mauve = "Mauve"
tags.color_nblue = "Navy blue"
tags.color_gray = "Gray"
tags.color_kblue = "Klein Blue"
tags.color_boran = "Burnt Orange"
tags.color_grass = "Grass"
tags.color_bfur = "Bismarck-furious"
tags.color_pbrou = "Pale brown"
tags.color_grod = "Goldenrod"
tags.color_black = "Black"
tags.color_white = "White"
tags.color_pink = "Pink"
Повторяем 2-й пункт для других языков, если ваш сайт поддерживает мультиязычность.
Буду делать тоже самое в комментариях, если там что-то будет отличаться, то выложу апдейт к этой инструкции.
FixBug, попробуйте обновить SVN: http://ngcms.ru/forum/viewtopic.php?id=70
Описание
Вызов любых тегов используя комбинации клавиш на вашей клавиатуре. Например, если вам не нравится работать в режиме автоформатирования, то вы сможете сделать так, чтобы при нажатии клавиши Enter вставлялся тег [br], я приложу инструкцию по установке и настройке патча, но придумывать сочетания клавиш вам придется самостоятельно в зависимости от предпочтений.
Мы будем использовать библиотеку shortcut.js, она прикреплена к этому сообщению.
Проверял лично в IE7 и FireFox, всё работает, но если у кого будут проблемы, пишите.
1. Кладем библиотеку shortcut.js в каталог .../engine/includes/js/
2. Открываем файл .../engine/skins/default/index.php
Найдите строчку
<script type="text/javascript" src="$config[admin_url]/includes/js/functions.js"></script>
Вставьте следом
<script type="text/javascript" src="$config[admin_url]/includes/js/shortcut.js"></script>
3. Открываем файл .../engine/skins/default/tpl/qt_news.tpl
В самом верху вставляем скрипт:
<script type="text/javascript">
shortcut.add("Enter",function() {
insertext('[br]\n', '', {area});
});
shortcut.add("Ctrl+Shift+P",function() {
insertext('[p]','[/p]', {area});
});
shortcut.add("Ctrl+B",function() {
insertext('[b]','[/b]', {area});
});
</script>
Это всё, что требуется.
Теперь подробнее о настройке.
shortcut.add("Enter",function() {
insertext('[br]\n', '', {area});
});
На месте "Enter" может быть сочетание любых поддерживаемых клавиш с символами. Я советую использовать комбинации не более, чем из трех клавиш.
Поддерживаемые клавиши (кроме латиницы)
* Tab * Space * Return * Enter * Backspace * Scroll_lock * Caps_lock * Num_lock * Pause * Insert * Home * Delete * End * Page_up * Page_down * Left * Up * Right * Down * F1 * F2 * F3 * F4 * F5 * F6 * F7 * F8 * F9 * F10 * F11 * F12
insertext('[br]\n', '', {area});
Здесь мы задаем то, что будет выводиться в поле редактора.
Внимательно!
"\n" - это перевод курсора на следующую строчку после добавленного тега!
('первый', 'второй', {area}) - если вам нужно вставить два тега, то заполняем обе части "первый" и "второй", не забываем перед вторым тегом ставить слэш, закрывающий первый тег. Если вам нужно вставить один тег, то вместо 'второй' оставляем ''!
Список поддерживаемых тегов BB кода:
[code*] ..[/code*]
=> <pre> .. </pre>
[quote]..[/quote]
=> <blockquote> .. </blockquote>
[quote=ТЕКСТ]..[/quote]
[acronym] .. [/acronym] => <acronym> .. </acronym>
[acronym=ТЕКСТ] .. [/acronym] => <acronym title="ТЕКСТ"> .. </acronym>
[email]ДАННЫЕ[/email] => <a href="mailto:ДАННЫЕ"> ДАННЫЕ </a>
[s] .. [/s] => <s> .. </s>
[b] .. [/b] => <b> .. </b>
[i] .. [/i] => <i> .. </i>
[u] .. [/u] => <u> .. </u>
[p] .. [/p] => <p> .. </p>
[ul] .. [/ul] => <ul> .. </ul>
[li] .. [/li] => <li> .. </li>
[ol] .. [/ol] => <ol> .. </ol>
[left] .. [/left] => <p style="text-align: left"> .. </p>
[right] .. [/right] => <p style="text-align: right"> .. </p>
[center] .. [/center] => <p style="text-align: center"> .. </p>
[justify] .. [/justify] => <p style="text-align: justify"> .. </p>
[color=ЦВЕТ] .. [/color] => <span style="color: ЦВЕТ"> .. </span>
[spoiler] .. [/spoiler]
[spoiler="ТЕКСТ"] .. [/spoiler] (вариант будет доступен в RC #03 и выше)
[br] => <br />
Возможные варианты использования тега [img]:
[img URL ФЛАГИ]ОПИСАНИЕ[/img]
[img=URL ФЛАГИ]ОПИСАНИЕ[/img]
[img ФЛАГИ]URL[/img]
где:
URL - адрес картинки
ФЛАГИ - доп. флаги, пишутся в формате ФЛАГ="ЗНАЧЕНИЕ":
* width - ширина в пикселях
* height - высота в пикселях
* border - граница в пикселях
* align - расположение ( left / right / center )
* class - любой текст
Возможные варианты использования тега [url]:
[url URL ФЛАГИ]ОПИСАНИЕ[/url]
[url=URL ФЛАГИ]ОПИСАНИЕ[/url]
[url ФЛАГИ]URL[/url]
Внимание!!
Если вам нужно добавить новый тег, то 1. что вам понадобится, это настроить его в файле .../engine/includes/classes/parse.class.php
, где по образу и подобию строки $content = preg_replace("#\[justify\](.*?)\[/justify\]#is","<p style=\"text-align: justify\">$1</p>", $content); после нее добавляем новую, потом новый тег можно добавить в файл .../engine/skins/default/tpl/qt_news.tpl либо кнопочкой, либо быстрыми клавишами, как вам будет удобнее.
.../engine/skins/default/tpl/qt_news.tpl - форма добвления/редактирования новостей
.../engine/skins/default/tpl/qt_editcom.tpl - форма редактирования комментариев
.../engine/skins/default/tpl/qt_static.tpl - форма добавления/редактирования статических страничек
.../engine/skins/default/tpl/qt_pmmes.tpl - форма отправки личных сообщений
Вы можете патчить вышеописанным методом любую из этих форм.
Решил для себя эту проблему отключив автоформатирование и сделав так, что-бы тег [br] выскакивал при нажатии на клавишу Enter.
В раздел какого-нибудь фака кину инструкцию. Так же можно настроить быстрые клавиши для выделения текста жирным, или параграфом. )
d7p4x, юзайте строгий доктайп, это сведет использование хаков к минимуму, но верстку возможно придется сильно доделывать.
Хотелось бы пофиксить лишние теги <br /> в автоформатировании..
Использование тега <p> автоматически определяет новый абзац, а значит и всё, что пойдет за тегом окажется на новой строчке.
Теги списков <ul>, <ol>, <li>
При добавлении результат форматирования такой:
<ul>
<br>
<li></li>
<br>
<li></li>
<br>
</ul>
Все теги <br> в списках не желательны.
т.е если я использую
[ul]
[li][/li]
[li][/li]
[/ul]
по факту получается
[ul]
[li][/li]
[li][/li]
[/ul]
===
[p][/p]
[p][/p]
по факту опять выходит лишний перенос строк.
[p][/p]
[p][/p]
Мне кажется, что эта проблема решается занесением одного визуального пропуска после всех тегов без использования [br/] в автоформатировании. Кроме ссылок, картинок естественно...
т.е. если я в редакторе ввожу
[p][/p]
[ul]
[li][/li]
[li][/li]
[/ul]
[p][/p]
какой-либо текст
результат должен быть таким:
[p][/p]
[br]
[ul]
[li][/li]
[li][/li]
[/ul]
[br]
[br]
[p][/p]
какой-либо текст
+ html:
<p></p><br /><ul><li></li><li></li></ul><br /><br /><p></p>какой-либо текст
Ну а в данный момент, чтобы получить такой результат - приходится лепить в редакторе следующее:
[p][/p]
[ul][li][/li][li][/li][/ul]
[p][/p]какой-либо текст
Trashcka, 523
Wolverine, нашел только такую строчку:
if (preg_match('/^(.+)\_/', $name_parr, $match))
eregi у меня в templates.class.php нету. )
Версия PHP: 5.2.9