Вы не зашли.
Имеем пять блоков top_news_X, для каждого блока своя папка с шаблонами.
Соответственно locatePluginTemplates непригоден для автоматического получения пути к шаблону. Если в каталоге плагина это еще можно решить засунув все в skins и отправляя в параметре $skin имя блока, то с шаблонами в папке основного шаблона будет беда, так как функция жестко ищет в каталоге /plugins/$plugin.
Это можно обойти если в $plugin передавать 'top_news/'.$blockName, тогда с шаблонами в основном шаблоне будет ОК, но с шаблонами в каталоге плагина будет беда. От skins отказываемся.
Но и это можно обойти, если структуру шаблонов в каталоге плагина соорудить в виде /engine/plugins/top_news/top_news1/tpl/top_news.tpl
И оно в общем-то работает, если не считать, что я работаю со skins, которые для этого не предназначены, а также на деформированную структуру директории плагина (вместо того, чтобы создавать папки в tpl, я в корне делаю папки и в них папка tpl), что в общем-то выглядит через жопу.
Пока использую свою реализацию этой функции
function myLocatePluginTemplates($tname, $plugin, $localsource = 0, $blockName = '', $skin = '') {
global $config;
$tpath = array();
foreach ($tname as $fn) {
$fnc = (substr($fn, 0, 1) == ':')?substr($fn,1):($fn.'.tpl');
if (!$localsource && is_readable(tpl_site.'plugins/'.$plugin.'/'.($blockName?$blockName.'/':'').$fnc)) {
$tpath[$fn] = tpl_site.'plugins/'.$plugin.'/'.($blockName?$blockName.'/':'');
$tpath['url:'.$fn] = tpl_url.'/plugins/'.$plugin.($blockName?$blockName:'');
} else if (is_readable(extras_dir.'/'.$plugin.'/tpl/'.($skin?'skins/'.$skin.'/':'').($blockName?$blockName.'/':'').$fnc)) {
$tpath[$fn] = extras_dir.'/'.$plugin.'/tpl/'.($skin?'skins/'.$skin.'/':'').($blockName?$blockName.'/':'');
$tpath['url:'.$fn] = admin_url.'/plugins/'.$plugin.'/tpl'.($skin?'/skins/'.$skin:'').($blockName?$blockName:'');
}
}
return $tpath;
}
Сделано. Отмечаю для себя
Так если шаблонов для плагина нет в папке с шаблоном, то плагин берет их своего каталога, откуда ошибка появляется?
Не совсем понятно, что ты предлагаешь. Брать все стопицот шаблонов, которые находятся в папке templates, брать их main.tpl и проверять на наличие блоков, и это каждый раз при отработке плагина. Как-то не очень звучит
Это как бы задача администратора сайта создать один раз нужные папки с шаблонами, так можно докатиться до того, что если нет нужных шаблонов, то создавать их плагином Разве нет?
Единственное, что действительно интересно, это вынести в конфигуратор запрет на работу некоторых блоков в выбранных шаблонах, чтобы в том шаблоне, где мне вывод не нужен (например PDA версия) плагин просто не заполнял эти переменные и тем самым не создавал некоторую нагрузку.
надо бы сделать, чтобы плагин не требовал наличия папок top_newsХ, если в шаблоне сайта не используется плагин
Требует он только тогда, когда включен плагин и у него в конфигурации есть минимум одна переменная, то есть когда он пытается взять шаблон для работы этой переменной и заполнить ее неким текстом. А выводит ее пользователь на сайте или нет это уже не его проблемы.
или используется другая папка top_newsХ, т.к. при использовании разных шаблонов это не гуд
Не понял про что ты.
Регистрацией занимается плагин авторизации, надо будет его немного изменить
У финансовых плагинов хорошая документация, на 30 минут изучения
Вот модуль для DLE, полностью открытый http://www.strblog.com/archives/90
Перенести код в NG дело нехитрое.
legenda, да-да-да, спасибо. Поигрался с блоками и сам увидел проблему. Перекачай архив с версией 0.9 из шапки
Ну раз это все, кто потестировал, то релиз. Потом не обижайтесь
[0.9] [2010-12-10]
* рекомендуемое обновление для версий 0.6+, починено что сломано ранее
(для работы необходима NG CMS 0.9.2 695+)
см. права на /engine/conf/config.php
0.9.2 нужна, обновленная до 695 ревизии. Ты на этой версии смотришь работу плагина или на 0.9.1?
Можно так (title = Заголовок вашего сайта : Категория : Новость 2, в общем title страницы)
<script type="text/javascript">jqsocial(location.href),encodeURIComponent(document.title))</script>
Или так (title= Только название новости)
<script type="text/javascript">jqsocial(location.href),encodeURIComponent('{title}'))</script>
Тестовая версия 0.9b, для ее работы необходим /engine/includes/news.php из http://trac2.assembla.com/ngcms/changeset/695 Также не забывайте сделать вкл/выкл плагина в админке.
Благодаря новой функции избавился от лишнего новостного фильтра, соответственно и логика стала попроще и глюков должно быть меньше (в идеале их вообще не должно быть). Кеширование не работало как раз из-за криво поставленного фильтра, сейчас должно быть нормально. Тоже самое и с выводом в статике.
Прошу нормально поиграться с этой версией, нет возможности, чтобы детально просматривать все варианты работы
Сам как думаешь, что я могу сказать? Выкладывай настройки всех блоков и подробно расписывай, что где не работает. Думаю это косяк последних обновлений,в связи новой фишкой движка буду переделывать работу, можешь просто подождать, но лучше подробно расписать, что я просил.
Ну title то 100% работает, а полная ссылка нет, поэтому и скрипт не отрабатывает. Посмотрю вечером.
http://ngcms.ru/docs/draft/docs/templat … l.tpl.html
название_статьи = {title}
http://ngcms.ru/docs/draft/docs/templat … t.tpl.html
{full-link} - ссылка на полную страницу новости
Не знаю только работает ли {full-link} в news.full.tpl, если нет, то можно допилить этот момент небольшим хаком или прям из JS получать URL через https://developer.mozilla.org/en/DOM/document.URL
vitaly
1. это теперь в $SYSTEM_FLAGS['news']['db.categories'] будет храниться список категорий, к которым принадлежит новость? Спрашивается почему не ввести было это раньше, я во многих плагинах извращался с никому не нужными фильтрами http://ngcms.ru/forum/viewtopic.php?id=857
2. Было бы здорово, если такие нововведения где-то описывались, пусть одной строкой, типа есть такая возможность
http://www.a1tv.ru/file/0065/7762/index.flv
Trashcka, верстка будет не моя, а стороннего человека
Мотороллер не мой! Я просто разместил объяву!!!
Реквестирую Виталия в топик для высказывания мнения по этому вопросу,а то мужики не в курсе
Открой config.php, после
LoadPluginLang('lasttweets', 'config', '', '', ':');
добавь
global $lang; print_r($lang);
и посмотри наличие элементов [lasttweets:ххх], например [lasttweets:legend_general] Увидим подгрузились ли вообще языковые файлы.
Еще можно попробовать
function main(){
global $tpl;
Заменить на
function main(){
global $tpl, $lang;
1. Проверить наличие \engine\plugins\uprofile\lib\uprofile.lib.php, включить/выключить плагин uprofile
2. Включить/выключить плагин comments
\engine\skins\default\tpl\addnews.tpl
Найти
<td><input type="text" class="important" size="79" name="title" value="" tabindex="1" /></td>
Заменить на
<td><input type="text" class="important" size="79" name="title" value="1" tabindex="1" /></td>