X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

2 страниц Открыть меню   1 2 >  
Ответить в данную темуНачать новую тему
> Дополнительные поля для версии 0.9
leshij
сообщение 2013-07-11, 21:41
Сообщение #1
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 149
Регистрация: 2013-04-14

Репутация:   нет  
Всего: нет


Давно обещал Александру опубликовать данный мануал, но руки не доходили, но сейчас появилось пара часов свободного времени и я решил сделать полезное дело.

И так в этом примере я опишу, как добавить дополнительное однострочное поле в модуль новостей.
Список файлов в которых будем делать изменения:
Цитата
modules/news/admin/index.php
templates/Audora/Classes/NewsAdmin.php
modules/news/user/index.php
templates/Uniel/Classes/UserNews.php


Для начала нам нужно выполнить SQL заброс, для внесения нужных полей в вашу базу данных:

ALTER TABLE `el_news` ADD `nazvanie_polya` TINYTEXT NOT NULL

Обратите внимание на префикс таблицы, по умолчанию он "el". Если вам нужно добавить сразу несколько полей, то после "NULL" в запросе ставите запятую, пробел и дублируете ADD `nazvanie_polya` TINYTEXT NOT NULL данную часть запроса. Название каждого поля должно быть уникальным.

Теперь преступим к редактированию php файлов:
открываем файл modules/news/admin/index.php
Находим в нём
#Специальные
'_maincat'=>0,

ниже добавляем
'nazvanie_polya'=>'',


Далее в этом же файле находим
$Eleanor->VotingManager->bypost=true;

ниже добавляем
$values['nazvanie_polya']=isset($_POST['nazvanie_polya']) ? (string)$_POST['nazvanie_polya'] : '';


Ещё ниже находим
'show_sokr'=>isset($_POST['show_sokr']),
'tags'=>'',

и ниже добавляем
'nazvanie_polya'=>isset($_POST['nazvanie_polya']) ? (string)$_POST['nazvanie_polya'] : '',

Сохраняем изменения и закрываем файл.

Переходим к файлу templates/Audora/Classes/AdminNews.php
находим в нём
->item(static::$lang['status'],Eleanor::Select('status',Eleanor::Option(static::$lang['waitmod'],-1,$values['status']==-1).Eleanor::Option(static::$lang['blocked'],0,$values['status']==0).Eleanor::Option(static::$lang['active'],1,$values['status']==1),array('tabindex'=>10)))

и сразу после этого вставляем
->item('nazvanie_polya',Eleanor::Input('nazvanie_polya',$values['nazvanie_polya']))

сохраняем изменения, закрываем файл.

Переходим к файлу modules/news/user/index.php
Находим
$R=Eleanor::$Db->Query('SELECT `id`,`cats`,IF(`pinned`=\'0000-00-00 00:00:00\',`date`,`pinned`) `date`,`author`,`author_id`,`show_sokr`,`r_average`,`r_total`,`r_sum`,`status`,`reads`,`comments`,`tags`,`uri`,`title`,`announcement`,`text`,`meta_title`,`meta_descr`,UNIX_TIMESTAMP(`last_mod`) `last_mod`,`voting` FROM `'.$mc['t'].'` INNER JOIN `'.$mc['tl'].'` USING(`id`) WHERE `language`IN(\'\',\''.Language::$main.'\') AND '.$where.' LIMIT 1');

и в этой строке после `voting` добавляем наше дополнительное поле. после добавления поля, строка должна выглядеть так:
$R=Eleanor::$Db->Query('SELECT `id`,`cats`,IF(`pinned`=\'0000-00-00 00:00:00\',`date`,`pinned`) `date`,`author`,`author_id`,`show_sokr`,`r_average`,`r_total`,`r_sum`,`status`,`reads`,`comments`,`tags`,`uri`,`title`,`announcement`,`text`,`meta_title`,`meta_descr`,UNIX_TIMESTAMP(`last_mod`) `last_mod`,`voting`,`nazvanie_polya` FROM `'.$mc['t'].'` INNER JOIN `'.$mc['tl'].'` USING(`id`) WHERE `language`IN(\'\',\''.Language::$main.'\') AND '.$where.' LIMIT 1');

Сохраняем изменение, закрываем файл.

Переходим к файлу templates/Uniel/Classes/UserNews.php
Находим в нём
public static function Show($a,$category,$voting,$comments,$hl)

и сюда (чуть ниже) уже добавляем html код вместе с переменной поп.поля, допустим я это сделал так, перед
.$comments;

добавил следующий код

.'<div>
	<img src="'.$a['nazvanie_polya'].'" />
</div>'

тем самым при добавлении новости можно добавлять ссылку на изображение и выводить это изображение в любом нужном месте шаблона полной новости.

Вот собственно и всё.

PS: "nazvanie_polya" меняйте на свои названия, латинскими буквами.

Сообщение отредактировал leshij - 2013-07-12, 9:39
Перейти в начало страницы
+Цитировать сообщение
Maximkaboom
сообщение 2013-07-11, 21:51
Сообщение #2
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 766
Регистрация: 2010-04-08
Версия системы: RC5

Репутация:   нет  
Всего: 1


leshij, этот способ подходит только для полей, которые одинаковы на любом языке.
написал бы в продолжении, как быть с полями, которые требуют мультиязычности)))

Добавлено через 4 минут, 33 секунд:

ЗЫ так же может быть необходимо обязательное заполнение этого поля, можно дописать как вставить проверку.
Так же поле может быть не только текстовым, но это мелочи, всего не учтёшь.
Статья в целым очень полезная. Неплохо бы её закрепить, что бы не потерялась.
Перейти в начало страницы
+Цитировать сообщение
leshij
сообщение 2013-07-11, 21:57
Сообщение #3
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 149
Регистрация: 2013-04-14

Репутация:   нет  
Всего: нет


Цитата (Maximkaboom @ 2024-03-19 10:55)
написал бы в продолжении, как быть с полями, которые требуют мультиязычности)))

Если бы я хорошо понимал в php, то несомненно бы дополнил, но так как у меня не было потребности в таких полях, то и в мануале их нет. Данный мануал писал для меня Александр, мы просто с ним договорились, что я опубликую это для народа. Мануал написан месяца 2-3 назад, просто не было времени для публикации.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2013-07-11, 23:34
Сообщение #4
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Без проблем помогу сделать и мультиязычные поля.
Кстати, кто может запилить мануал на wiki ?
Перейти в начало страницы
+Цитировать сообщение
leshij
сообщение 2013-07-11, 23:45
Сообщение #5
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 149
Регистрация: 2013-04-14

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2024-03-19 10:55)
Кстати, кто может запилить мануал на wiki ?

Я могу сделать репост там и ещё 1-2 мануала которые вы для меня писали, тоже там выложить.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2013-07-12, 0:26
Сообщение #6
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


leshij, все ждут мануалов, и я в том числе.
Перейти в начало страницы
+Цитировать сообщение
leshij
сообщение 2013-07-12, 0:29
Сообщение #7
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 149
Регистрация: 2013-04-14

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2024-03-19 10:55)
все ждут мануалов, и я в том числе.

ок, те которые у меня есть, закину в вики. может ещё какие у вас "закажу"
Перейти в начало страницы
+Цитировать сообщение
Maximkaboom
сообщение 2013-07-12, 5:24
Сообщение #8
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 766
Регистрация: 2010-04-08
Версия системы: RC5

Репутация:   нет  
Всего: 1


leshij, здесь тоже выложите=)
Перейти в начало страницы
+Цитировать сообщение
leshij
сообщение 2013-07-12, 9:09
Сообщение #9
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 149
Регистрация: 2013-04-14

Репутация:   нет  
Всего: нет


Цитата (Maximkaboom @ 2024-03-19 10:55)
leshij, здесь тоже выложите=)

здесь в первую очередь :)
Перейти в начало страницы
+Цитировать сообщение
SpD
сообщение 2013-11-06, 20:18
Сообщение #10
Новичок
Иконка группы

Группа: Eleanor user
Сообщений: 29
Регистрация: 2010-06-10
Версия системы: RC5

Репутация:   нет  
Всего: нет


А как сделать не однострочное поле, а выподающий список? например поле "год выпуска" и там были с 2003 до 2007 например...
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2013-11-07, 2:28
Сообщение #11
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


SpD, Eleanor::Select() - сам список. , Eleanor::Option() - пункты списка. Конкретизируйте ваш вопрос.
Перейти в начало страницы
+Цитировать сообщение
SpD
сообщение 2013-11-07, 12:05
Сообщение #12
Новичок
Иконка группы

Группа: Eleanor user
Сообщений: 29
Регистрация: 2010-06-10
Версия системы: RC5

Репутация:   нет  
Всего: нет


т.к. сайт делаю для автоклуба, то я клонировал модуль новостей и назвал его "отзывы владельцев". Теперь мне надо туда запихать доп.поля "год выпуска авто", "Марка кузова" и т.д. но только что бы пользователь или админ не писал в них что ему захется а выбрал из определёных вариантов.

Допустим пользователь решил оставить свой отзыв, выбирает он из выподающего списка год выпуска своего авто, марку кузова, тип двигателя и т.д. Потом уже пишет текст отзыва и отправляет.

Ну а отображение в модуле уже сам сделаю, тем более уже вкурил как это делать в нужном месте и даже сделал себе на сайте кнопочку красивую "обсудить на форуме" =) (тут скрин кнопочки)


списки выподающего меню естественно забивать вручную, ибо авто имеет ограниченые года выпуска, ограниченые марки двигателя и кузова и т.д. Допустим доп.поле год выпуска должно иметь выпадающее меню с выбором 1996, 1997, 1998, 1999, 2000, 2001, 2002

мне бы пример какой-то увидеть, а дальше сам =)



Сообщение отредактировал SpD - 2013-11-07, 12:57
Перейти в начало страницы
+Цитировать сообщение
SpD
сообщение 2013-11-07, 12:56
Сообщение #13
Новичок
Иконка группы

Группа: Eleanor user
Сообщений: 29
Регистрация: 2010-06-10
Версия системы: RC5

Репутация:   нет  
Всего: нет


а как сделать так что отображалось в админке не "nazvanie_polya" а "Название поля".. т.е. то что я захочу что бы отображалось. в какой строке поменять что? Путём добавления в массивы языков не помогло.
Перейти в начало страницы
+Цитировать сообщение
wormen
сообщение 2013-11-07, 16:29
Сообщение #14
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 800
Регистрация: 2012-09-13

Репутация:   нет  
Всего: нет


а кэш в CMS чистить пробовали?
так же не исключено, что не в том языковом файле писали

Перейти в начало страницы
+Цитировать сообщение
SpD
сообщение 2013-11-07, 17:13
Сообщение #15
Новичок
Иконка группы

Группа: Eleanor user
Сообщений: 29
Регистрация: 2010-06-10
Версия системы: RC5

Репутация:   нет  
Всего: нет


user-russian.php, api-russian.php, admin-russian.php, news-russian.php(и в админке и в пользовательском шаблоне) вот во все эти вписал. мож ещё куда надо? КЭШ не помог.

Сообщение отредактировал SpD - 2013-11-07, 17:14
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2013-11-07, 17:18
Сообщение #16
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (SpD @ 2024-03-19 10:55)
мне бы пример какой-то увидеть, а дальше сам =)
Вот пример:

$years='';
$selected=2000;
foreach(range(1996,2002) as $v)
    $years.=Eleanor::Option($v,false,$v==$selected);
$select=Eleanor::Select('years',$years);


Остальные вопросы оформите в виде нумерованного списка - тогда будет легче вам помочь.
Перейти в начало страницы
+Цитировать сообщение
wormen
сообщение 2013-11-07, 18:27
Сообщение #17
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 800
Регистрация: 2012-09-13

Репутация:   нет  
Всего: нет


Цитата (SpD @ 2013-11-07, 18:13)
user-russian.php, api-russian.php, admin-russian.php, news-russian.php(и в админке и в пользовательском шаблоне) вот во все эти вписал. мож ещё куда надо? КЭШ не помог.


языковые файлы для админки есть еще в /addons/admin/...
Перейти в начало страницы
+Цитировать сообщение
SpD
сообщение 2013-11-07, 19:28
Сообщение #18
Новичок
Иконка группы

Группа: Eleanor user
Сообщений: 29
Регистрация: 2010-06-10
Версия системы: RC5

Репутация:   нет  
Всего: нет


wormen, да уже сам разобрался, спс =)

Alexander, спасибо, вроде разобрался.

Сообщение отредактировал SpD - 2013-11-07, 19:37
Перейти в начало страницы
+Цитировать сообщение
Гость_ANDREY1990_*
сообщение 2015-06-13, 10:30
Сообщение #19



Гости





привет подскажите файл полной новости как называется в шаблоне для юзера ? для 0.9 версий
Перейти в начало страницы
+Цитировать сообщение
Root
сообщение 2015-06-13, 15:37
Сообщение #20
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 443
Регистрация: 2012-01-16
Из: Казахстан

Репутация:   нет  
Всего: нет


Цитата (ANDREY1990 @ 2024-03-19 10:55)
подскажите файл полной новости как называется в шаблоне для юзера ? для 0.9 версий
Никак, его нету. Base.php используется как для краткой так и для полной новости. Но их можно легко разделить..
Перейти в начало страницы
+Цитировать сообщение

2 страниц Открыть меню   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0389 сек.    11 запросов    GZIP включен    Сейчас: 2024-03-19, 10:55