Вы не зашли.
если "по стилю и логике от Bootstrap" то другое дело
вот некоторые моменты, которые понравились лично мне в бутстрепе:
1. CSS-спрайты - т.е. для всех иконок в админке будет использоваться лишь одна (!) картинка... ну или две, если к примеру будет решено делать два стиля (допустим светлый и темный)
2. наследование - т.е. если просто кнопка это "btn" то зеленая кнопка это "btn btn-success" а рыжая "btn btn-warning"
3. использование сетки - т.е. располагать элементы в нужном порядке сможет даже ребенок, для этого достаточно запомнить имена span1, span2 и т.д.
что не понравилось, говорил выше
а если взять от бутстрепа только хорошее и с похожими принципами сделать свое, которое пусть будет меньше и проще но зато
1. нормально будет работать с border-radius и с градиентами в 7 и 8 глюксплорерах
2. не будет иметь проблем с оперой и хромом
3. не будет настолько "жирным" и уж тем более не будет требовать подключения дополнительных js
то лично я только за... более того, готов принять участие независимо от того имеются готовые наработки или нет... и еще более того - его же можно использовать не только для админки, но как минимум еще и для оформления плагинов и для дефолтного шаблона (я про всякие кнопки и прочую чушь)
требовался аналог вот этого плагина
http://ngcms.ru/forum/viewtopic.php?pid=29274
только не для добавления а для редактирования, т.е. пользователя нельзя пускать в админку но нужно предоставить возможность редактировать "свои" новости
уже неактуально т.к. сделал немного хакнув includes/news.php, т.е. по аналогии с
$tvars['vars']['[edit-news]']
добавил
if ($row['author_id'] == $userROW['id']){
$tvars['vars']['[edit-news2]'] = blablabla;
}
но если есть варианты реализации без хаков движка, то с удовольствием выслушаю
"нет" в рамках плагина или "нет" в принципе?
ну так поскольку у нас xvalue_foto содержит имя картинки - то просто пишем в шаблоне для полной картинки
[xfield_foto]<img src="сайт.ком/requests/[xvalue_foto]" alt="{title}" title="{title}" />[/xfield_foto]
для превьюшек
[xfield_foto]<img src="http://сайт.ком/requests/s_[xvalue_foto]" alt="{title}" title="{title}" />[/xfield_foto]
еще раз прочти внимательно, где ты видел намек на [xvalue_foto]?
там же черным по белому:
обратите внимание, что я не использую поле для загрузки картинок так же как остальные доп. поля, а данной строкой переназначаю его... сделано для того чтобы не было глюков, если два пользователя зальют картинку с одинаковым именем
т.е. в шаблоне плагина, там где форма добавления пишем не
...
а
<input type="file" name="filename" class="field">
это и есть форма для загрузки изображения
так сделано по нескольким причинам, одна из которых чтоб не было ошибки в случае с одинаковыми именами файлов
а для формы регистрации их можно добавить?
Скорее всего возможно будет использоваться фреймворк Bootstrap. Так что можно предлагать многие вещи с учетом его возможностей.
недавно делал верстку, заказчик потребовал Bootstrap...
при более детальном знакомстве он оказался очень сырым продуктом - хваленая кроссбраузерность работает только для простых вещей, такое впечатление что разрабы слышали лишь о файрфоксе и айфоне (для айфонов/айпадов шикарно, не спорю)
тем не менее, обнаружились глюки в
- гуглохроме с формами (btn и его производные)
- опере с классами для слайдеров (carousel, carousel-inner и т.д.)
- ыксплорере ниже 9-ого, там вобще тихий 3.14здец творится...
учитывая что хром+опера+ыксплореры 7/8 в настоящее время это более 50% пользователей, то Bootstrap оправдан в 2-ух случаях:
1. для относительно простый проектов в стиле "мегаблог и суперварезник Василия Пупкина"
2. для "типа чиста канкретных поцонов", которые знают о правильной распальцовке больше чем о верстке и запомнят фразу "отныне мой сайт юзает Bootstrap", которую будут повторять друг перед другом
для админки он явно сырой, во всяком случае 2-ая версия
не улавливаем
отсрочка - зло, смотрите сами:
а если используется кросспостинг в кучу сервисов через RSS?
а если NG работает в симбиозе с другим двигом? - например на данном форуме проще всего выводить последние новости через RSS
а таких примеров гораздо больше
в плане СЕО - просто нужно отдавать через фид не всю новость а только ее анонс... идеал для сеошников - это если будет спец. поле для RSS, или к примеру новый бб-код, т.е. фид будет показывать лишь то что между [rss] и [/rss]... кстати, это была бы бомба для сеошников
а в плане защиты - RSS не для того нужен и тырить будут даже если его отключить
в новостной ленте работает
$SYSTEM_FLAGS['news']['db.id']
а вот в результатах поиска массив $SYSTEM_FLAGS ничего похожего не содержит...
как взять ид для каждого из результатов?
должно же быть что-то подобное, раз имеются ссылки для редактирования/удаления в результатах поиска...
раз пошла такая пьянка, держите и от меня костыль
основан на плагине KhadeR-а, а поскольку он говорил что перестает поддерживать плагин, то надеюсь не будет сердиться за мою доработку напильником
принцип похож с тем что планировал, но по какой-то причине не реализовал KhadeR, т.е. для хранения имен файлов будет использоваться плагин xfields
это с одной стороны создаст некоторые неудобства - т.к. создавать 10 полей для 10 картинок не есть гуд, но также дает и плюсы - например при выводе в шаблоне мы можем к картинке добавлять alt и title на автомате - т.е. получаем ключи...
вобщем не претендую на гениальность и если кто может сделать лучше то пусть делает, я описываю как делал я
1. создаем поле foto (можете дать свое название, у в примере foto)
2. создаем в корне папку requests (можно любую другую, в примере указана requests), на всяк. случай ставим права 777 (зависит от хостинга) и обязательно закрываем htaccess-oм от выполнения в ней скриптов
3. открываем addnews.php и в самый конец дописываем 2 функции:
первой будем проверять расширение
function getExtension($filename) {
$path_info = pathinfo($filename);
return $path_info['extension'];
}
вторая понадобится для ресайза - т.е. делаем превьюшки, убрезаем по заданным размерам и т.д.
function image_resize(
$source_path,
$destination_path,
$newwidth,
$newheight = FALSE,
$quality = FALSE // качество для формата jpeg
) {
ini_set("gd.jpeg_ignore_warning", 1); // иначе на некотоых jpeg-файлах не работает
list($oldwidth, $oldheight, $type) = getimagesize($source_path);
switch ($type) {
case 1: $typestr = 'gif' ;break;
case 2: $typestr = 'jpeg'; break;
case 3: $typestr = 'png'; break;
}
$function = "imagecreatefrom$typestr";
$src_resource = $function($source_path);
if (!$newheight) { $newheight = round($newwidth * $oldheight/$oldwidth); }
elseif (!$newwidth) { $newwidth = round($newheight * $oldwidth/$oldheight); }
$destination_resource = imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($destination_resource, $src_resource, 0, 0, 0, 0, $newwidth, $newheight, $oldwidth, $oldheight);
if ($type = 2) { # jpeg
imageinterlace($destination_resource, 1); // чересстрочное формирование изображение
if ($quality) imagejpeg($destination_resource, $destination_path, $quality);
else imagejpeg($destination_resource, $destination_path);
}
else { # gif, png
$function = "image$typestr";
$function($destination_resource, $destination_path);
}
imagedestroy($destination_resource);
imagedestroy($src_resource);
}
4. далее внутри функции doAdd() добавим немного вот такого кода:
//если юзер не дал файл то никаких операций с картинками не делаем
if ($_FILES['filename']['name'] == ''){
$name_image = '';
}else{
// проверяю содержание (mime-тип) загруженного файла
$imageinfo = getimagesize($_FILES['filename']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/png') {
header ("Location: http://google.com");
}
// проверяю расширение
$imageext = getExtension($_FILES['filename']['name']);
if ($imageext != 'gif' && $imageext != 'jpg' && $imageext != 'jpeg' && $imageext != 'png') {
header ("Location: http://google.com");
}
if($_FILES["filename"]["size"] > 1024*0.3*1024)
{
echo ("Размер файла превышает 300 килобайт");
exit;
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную и переименовываем
move_uploaded_file($_FILES["filename"]["tmp_name"], "./requests/".md5(time()).".".getExtension($_FILES['filename']['name']));
//
$name_image = md5(time()).".".getExtension($_FILES['filename']['name']);
$_REQUEST['xfields']['foto'] = $name_image;
$old_image = "./requests/".$name_image;
$small_image = "./requests/s_".$name_image;
//делаем ресайз
image_resize ($old_image, $small_image, 100 );
$small_image = str_replace("./","/", $small_image);
} else {
echo("Ошибка загрузки файла 1");
}
}
если у вас свое название поля, то измените его в строке
$_REQUEST['xfields']['foto'] = $name_image;
обратите внимание, что я не использую поле для загрузки картинок так же как остальные доп. поля, а данной строкой переназначаю его... сделано для того чтобы не было глюков, если два пользователя зальют картинку с одинаковым именем
т.е. в шаблоне плагина, там где форма добавления пишем не
<input id="xfields[foto]" name="xfields[foto]" value="" class="field" />
а
<input type="file" name="filename" class="field">
5. В шаблоне для добавления чтобы у формы обязательно стояло enctype="multipart/form-data"
иначе не заработает
для ленивых приаттачен модернизированный файл addnews.php - если вас устраивают предложенные пути к картинкам и имя доп.поля, можете просто заменить ним оригинал... дополнительно там еще одна модернизация - он автоматом режет на полную и короткую новость, т.е. через 26 слов добавляет
<!--more-->
если нужно больше файлов для загрузки - вижу 3 варианта:
либо делаем больше доп. полей
либо изменяем по-своему, чтоб в поле foto хранилась не одна картинка, а массив из нескольких
либо изменяем по-своему, чтобы юзать функции движка
опен сорц все-таки
возможные отмазки, почему не использовал возможности движка:
- а вдруг я делаю нечто вроде доски, и превьюшки у загруженных пользователями новостей должны быть не такими как загруженные журналистами
- а вдруг я еще чего-то там замутил, и мне надо оформить вывод картинок по-разному в зависимости от того кто загружал (допустим рецепты читателей и рецепты от журналистов)
- а вдруг простые пользователи не знают как добавлять альты к картинкам
- а вдруг мне понадобится не две картинки (обычная и превью) а четыре (для превью в популярных один размер, для превью в ленте новостей другой, и т.д.)
......
legenda пишет:нету загрузки изображений
Есть.
кажется я понял в из-за чего такие разногласия )))
на скрине четко видно "доступ к загрузке изображений" - а в архиве из 75-го поста в настройках этой опции нету
т.е. речь идет просто о разных версиях
спасибо, действительно не хватало всего лишь {plugin_xfields_N}
возможно есть смысл подправить редми для плагина, чтобы в будущем таких вопросов не возникало?
что "работает"?
ок, еще раз - допустим, мне нужны поля "цвет волос" и "размер сисек" - я их создаю в xfield (вкладка пользователи)
причем просматривая мускул через phpmyadmin четко видно что поля xfields, xfields_volosy, xfields_siski имеются
как при просмотре профиля показать xvalue_siski? [xvalue_поле] не работает - может для пользователей надо как-то иначе? и где их редактировать?
где они?
использую 0.9.3 Release [SVN880+FIX01] + xfields 0.13
на вкладке Пользователи: поля создаю поля для пользователей - в базе они появляются, но ни при редактировании ни при просмотре профиля ничего нету (делаю как с новостями, т.е. [xfield_поле][xvalue_поле][/xfield_поле])
с пользователями - это готовый функционал или "на всякий случай для тестирования"? если готовый, что и куда нужно повернуть чтобы заработало?
а зачем из пушки по воробьям? не проще ли визивиг подключить?
не для того иксфилдс создавался, чтобы текст жирным выделять...
$14 для одного сайта и $700 неограниченно
спасибо, но это не совсем то
ifhandler выведет если новость и ничего не выведет если рубрика
а нужно вывести блаблабла для новости и аблаблабл для рубрики
плагин должен делать определенные действия на странице новости, но должен игнорировать категории, страницы плагинов, и т.д.
действия происходят за пределами {mainblock} (в данном случае внутри head)
можно попытаться получить ид или имя новости - если оно отсутствует то значит мы не на странице новости...
а есть ли более красивое решение - например аналог вордпрессовского is_single?
т.е. если это новость - делаем, иначе - не делаем...
1. байан (в оригинале то ли молдавские, то ли казахские были)
2. флеш
т.е. нужно было назвать топик "именно так нельзя делать"
овчинка выделки не стоит
гс-ы давно не наполняются руками (разве что руками школьников-двоешников) - для остального существуют парсеры
если служил в армии, то должен знать что тактическое преимущество (выбор времени, места, вида атаки и т.д.) всегда на стороне атакующего
воришка в данном случае - атакующий
ты убьешь вечер (два, три и т.д. - зависит от твоих знаний и от "хитрости" алгоритма) на свою "суперзащиту"
воришка потратит от пары минут (обычный str_replace) до пары часов (curl = емуляция браузера с отключенным js)
а можно еще и рсс парсить - пару секунд получается
поверь, было бы так просто - на всяких CNN или BBC давно бы стояло нечто подобное
Как я понял выбранные категории хранятся в поле catid таблицы _news. Можно добавить ещё поле, например, maincatid - в нём будет хранится выбор главной категории...
После исправления, у кого было выбрано несколько категорий, так и останется ссылка со всеми выбранными категориями. А кому надо в ссылке одну категория, тот может выбрать главную... И у него в ссылке будет только главная, но и в другие категории эта новость тоже попадёт...
Это моё личное мнение и никому его сильно не навязываю... Автор захочет - исправит, ну а нет, как говорится и суда нет...
Просто подумал, что раз выбор главной и дополнительных категорий были разделены, то это кому-то надо было... Вот и хотелось бы услышать от автора: для чего они были разделены и как они должны были работать...
как-то обсуждался подобный вопрос - категории, если их несколько, хранятся через запятую, т.е. получаем массив
просто бери первый элемент массива - он и будет главной категорией
например, выбрал в главной категорию, только она попала в ссылку, не зависимо, есть ли выбор в дополнительных... а не выбрал в главной, то в ссылку попадают все из дополнительных
оптимально новость вообще без категории делать - т.е. она будет иметь вид сайт.ком/новость.хтмл, а категория сайт.ком/категория
это можно сделать без каких-либо хаков, простой настройкой чпу
правда придется допиливать соотв. плагины, например хлебные крошки
шустрый ты)))
угу
я уже сделал, только беру не ид, а название ($SYSTEM_FLAGS['info']['title']['item']) - так работает и в старой и в новой версии
кстати, по ид ищет быстрее - поэтому отказался от универсальности-совместимости, для 9.3 + буду юзать $SYSTEM_FLAGS['news']['db.id'];
с $newsID тоже разобрался - если кому-то понадобится, то вот
class myNewsFilter extends NewsFilter {
function showNews($newsID, $SQLnews, &$tvars, $mode = array()) {
global $mysql, $config, $tpl;
print $newsID;//наш искомый ид
}
}
register_filter('news', 'my_function', new myNewsFilter);
t3s пишет:так это ид категории, а мне нужна сама новость
Это не ид категории... У категории $SYSTEM_FLAGS['news']['currentCategory.id']...
просто я набирал ответ до того как ты отредактировал - изначально и было написано ['news']['currentCategory.id'] ))
а нету этих самых страрых хлебных крошек? или хоть нужный кусочек примера с $newsID?
просто часть на старой версии, а часть на новой и хочется универсального решения... обновлять все старые нецелесообразно из-за множества изменений
так это ид категории, а мне нужна сама новость
в 9.3 новость - это $SYSTEM_FLAGS['news']['db.id']
но в более старых версиях не хочет работать
сабж в заголовке - что и где нужно обьявить, чтобы внутри функции можно было работать с ид новости?