0 Пользователей и 1 Гость просматривают эту тему.
  • 61 Ответов
  • 11585 Просмотров
*

Kosiak

  • Захожу иногда
  • 76
  • 1 / 0
  • Рулевой
При добавлении нового материала открывается wysiwyg редактор, мы имеем возможность редактировать заголовок статьи, и основной текст.
Необходимо добавить несколько новых полей в материал, наравне с заголовком статьи, чтобы при просмотре материала они отображались, к примеру, снизу в небольшом блоке.

Например, нужно добавить поля к материалу:
- Источник информации
- Тип лицензии (выпадающим списком чтоли сделать?)

Подскажите, может быть есть какое-то расширение решающее этот вопрос?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #1 : 19.08.2008, 13:19:02 »
Свеженькое, сам не проверял - http://joomlaforum.ru/index.php/topic,40455.0.html
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Kosiak

  • Захожу иногда
  • 76
  • 1 / 0
  • Рулевой
Re: Дополнительные поля в материале
« Ответ #2 : 19.08.2008, 13:58:15 »
beliyadm
Спасибо, но хотелось бы что-то посерьёзней чем костыли (хаки). Может быть есть именно расширение (плагин или компонент), которое рулит этим процессом?
*

era

  • Администратор
  • 1587
  • 391 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Дополнительные поля в материале
« Ответ #3 : 20.08.2008, 06:48:21 »
именно так и решили, отдельная таблица с тремя полями: ID собственное, ID материала, ID категории
да так-то и двух хватит столбцов: ID материала, ID категории
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #4 : 20.08.2008, 08:18:15 »
да так-то и двух хватит столбцов: ID материала, ID категории
теоретически да, но от третьего инкрементного поля вреда не будет и никогда не знаешь когда оно понадобится :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #5 : 02.08.2009, 23:44:16 »
Уважаемые мэтры своего дела, а не подскажите ли Вы, новичку-первооткрывателю пару секретиков, в частности связанных с полями в материале!?
Я использую QuickFAQ на J!1.5! Встала задача такая:как добиться,что бы материалы,публикуемые(в моем случае) в всего лишь в одной моей категории были эксклюзивны!Тобешь не повторялись ;D!Желательно конечно же иметь 2 поля для названия материала,публикуемого пользователями,ну да ладно...  ;) Основная задача,-это сделать так(сам не знаю как) что бы нельзя было создавать материалы в одной моей категории с одинаковым названием!Может подтолкнете хотя бы куда копать мне с этой задачей?Круто конечно же еслиб на "пальцах" ::) все объяснили!
С уважением!  ;)
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #6 : 03.08.2009, 10:32:42 »
vasya000 - только в пределах одной категории или вообще сделать запрет на одинаковые имена?
Если второе, то можно выполнить запрос
Код: sql
ALTER TABLE `jos_content` ADD UNIQUE (
`title`
)
Теперь при попытке создать второй материал с таким же заголовком будет выдаваться SQL ошибка, а чтобы было красиво - нужно писать дополнительно проверку в ядре (либо системный плагин)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #7 : 03.08.2009, 11:59:28 »
Уважаемый beliyadm! А куда вписать мне этот код? Конечно было бы не лишним знать какой запрос вписать в пределах и одной категории(всяко может быть)! ^-^
"нужно писать дополнительно проверку в ядре (либо системный плагин)"- а это как будет выглядеть(я имею введу какой код мне нужно прописать), может уже готовое решение есть????
Спасибо! *DRINK*
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #8 : 03.08.2009, 12:03:05 »
насчет готового решения не знаю, не встречал но и не искал
готовый код конечно сразу не выдам, правильным решением было бы написание дополнительного плагина для админки в котором делать проверку на существование материала с таким же именем в пределах категории, но этим надо заниматься.

А если вот такое хардкодовое решение запросом - то выполнить в phpmyadmin (убедившись что префикс таблиц у нас действительно jos)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #9 : 03.08.2009, 12:08:03 »
то выполнить в phpmyadmin (убедившись что префикс таблиц у нас действительно jos)

да,префикс таблиц у меня jos!Просто в поле  "Выполнить SQL запрос(ы) на БД" вписать этот код!?А галочку "Показать данный запрос снова" ставить?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #10 : 03.08.2009, 12:28:54 »
да,префикс таблиц у меня jos!Просто в поле  "Выполнить SQL запрос(ы) на БД" вписать этот код!?А галочку "Показать данный запрос снова" ставить?
можно и поставить, будет снова показан текст запроса. Не забываем делать резервную копию!
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #11 : 03.08.2009, 12:47:04 »
Я выполнил этот запрос,но когда пишу материал в QuickFAQ с названием,которое уже было использовано-он всеравно добавляется!Я пишу название материала тоже что и использовалось,а ответ(описание) - конечно же другое..... В чем может быть загвостка??
Может в запросе нужно не jos_content а jos_quickfaq?Не буду умничать,-не знаю.... crazy!
А как делать резервную копию?Пардон за ламерские вопросы! :laugh:
« Последнее редактирование: 03.08.2009, 12:53:00 от vasya000 »
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #12 : 03.08.2009, 13:11:29 »
я писал для стандартного com_content, если нужно для QuickFAQ - то конечно же да, смотрите таблицу jos_quickfaq и вместо уникального "title" подставляйте имя нужного поля
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #13 : 03.08.2009, 13:20:42 »
Блин,Вы меня простите,но я вобще ни че не понял! :-X
У меня есть такие строки с префиксом jos:
 jos_quickfaq_categories
  jos_quickfaq_cats_item_relations
  jos_quickfaq_favourites
  jos_quickfaq_files
  jos_quickfaq_files_item_relations
  jos_quickfaq_items
  jos_quickfaq_tags
  jos_quickfaq_tags_item_relations
какая из них отвечает за название материала?
Может поподробнее,  beliyadm! !!!???!!!
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #14 : 03.08.2009, 13:32:05 »
это таблицы, выбираем наверно jos_quickfaq_items (если я правильно понимаю название), в ней находим поле типа name или title или еще как то (которое содержит заголовок материала) и подставляем в запрос вместо title (ну и таблицу тоже соответственно указываем нужную для которой делаем ALTER TABLE
Детально не скажу, данным компонентом никогда в жизни не пользовался
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #15 : 04.08.2009, 03:09:04 »
Все!Разобрался!!!!!
Да,конечно жестковато выглядит....  ::)
Слушайте,ребят,а реально сделать такой запрос к базе, что б если чел пишет название материала какое уже использовалось,а описание к нему свое то материал с таким же именем не создается,а описание(ответ в данном случае) отправлялось к тому материалу,который уже был создан!
Реально такое осуществить!? *DRINK*
« Последнее редактирование: 04.08.2009, 03:26:19 от vasya000 »
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #16 : 06.08.2009, 17:32:36 »
насчет готового решения не знаю, не встречал но и не искал
готовый код конечно сразу не выдам, правильным решением было бы написание дополнительного плагина для админки в котором делать проверку на существование материала с таким же именем в пределах категории, но этим надо заниматься.

А если вот такое хардкодовое решение запросом - то выполнить в phpmyadmin (убедившись что префикс таблиц у нас действительно jos)

Уважаемый beliyadm, а можно например как-нибудь страницу с ошибкой ("хардкодовое решение") заменить своей,с текстом что-то типа "такой материал уже создан,воспользуйтесь поиском"?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #17 : 06.08.2009, 17:35:33 »
Уважаемый beliyadm, а можно например как-нибудь страницу с ошибкой ("хардкодовое решение") заменить своей,с текстом что-то типа "такой материал уже создан,воспользуйтесь поиском"?
нет, так не получится, ведь эта страница в принципе не знает почему произошла ошибка.
Проще чуть разобраться и добавить проверку в форму админки по созданию материала, в контроллер дописать обработку (проверка существования такого материала) и выдавать return false;
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #18 : 06.08.2009, 19:20:09 »
нет, так не получится, ведь эта страница в принципе не знает почему произошла ошибка.
Проще чуть разобраться и добавить проверку в форму админки по созданию материала, в контроллер дописать обработку (проверка существования такого материала) и выдавать return false;
шандец короче.... ладно,будем думать.... :)
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #19 : 15.08.2009, 00:11:38 »
Проще чуть разобраться и добавить проверку в форму админки по созданию материала
beliyadm, вот что я нашел:
CREATE TABLE IF NOT EXISTS `table` (
....
) ENGINE=... DEFAULT CHARSET=...;

http://phpforum.ru/index.php?showtopic=20107

но у меня что-то не получается...
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #20 : 15.08.2009, 00:17:06 »
ты не то нашел, это проверка на уровне запроса SQL cуществования указанной таблицы БД, тебе же нужно совершенно другое - при сохранении материала (есть такой триггер в админке) проверять наличие идентичного названия в заданной категории и возвращать false при провале
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #21 : 15.08.2009, 00:26:50 »
beliyadm, а если например не заниматься этим геммором (для меня это ваще невыполнимая задача,тк я ваще ни че не понимаю crazy!), а сделать с проверкой Ajax!Чел пишет название,тут же понятно что есть такая тема или нету!Это проще реализовать?
 *DRINK*
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #22 : 15.08.2009, 00:51:56 »
в любом случае (и на AJAX в том числе) нужно делать запрос в БД и проверять соответствие заголовка, если не знаешь php, но связку JS+PHP (что и есть по сути ajax) - уж точно будет сложнее сделать
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #23 : 15.08.2009, 11:59:37 »
beliyadm, я тут на форумчике другом поспрашивал... вот такой код предлагают для обработки ошибки:

Код
$result=mysql_query ("insert into `xxx` set title='dfdfd'");
if ($result) {
    // все ОК
} else {
   //Вывести сообщение
}

и такой код (если без ALTER TABLE... )

Код
//Ввели $title
$result=mysql_query ("select count (*) from `xxx` were title='$title'");
$row=mysql_fetch_row ($result);
$kol=$row[0];
if ($kol) {
    // Уже имеется запись - Вывести сообщение
} else {
   //все ОК
}

Если это верно,то куда мне воткнуть этоот PHP-шный код? *DRINK*
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #24 : 15.08.2009, 12:16:52 »
второй вариант более правильный, только нужно еще добавить условие WHERE catid = 'текущая категория', я как понял тебе нужно избежать дублирования в пределах одной категории. И не mysql_query а использовать стандартное API движка $bd
А вот куда воткнуть - надо смотреть где происходит обработка сохранения материала
Сейчас дам решение
« Последнее редактирование: 15.08.2009, 12:25:40 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #25 : 15.08.2009, 12:40:27 »
Да, beliyadm, в пределах одной категории... и стандаотный MySQL без всяких там query!
Жду!
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #26 : 15.08.2009, 13:03:38 »
Значит вот такое решение хардокодом у меня работает прекрасно - не дает создавать одинаковые заголовки в пределах одной категории
administrator\components\com_content\controller.php
находим там функцию сохранения function saveContent (), в самом ее конце есть блок switch ($task) {многа букав}, заменяем его на такой вот код
Код: php
//проверка на существование одинаковых заголовков
        $query = 'SELECT title FROM #__content WHERE title LIKE "'.$row->title.'" AND catid = '.$row->catid.' AND id <> '.$row->id.' AND state=1';
$db->setQuery ($query);
$sql = $db->loadObject ();
if ($sql->title != '') {
$msg = 'Такой материал уже существует';
$task = 'apply';
} else {
$msg = JText::sprintf ('SUCCESSFULLY SAVED CHANGES TO ARTICLE', $row->title);
}
switch ($task)
{
case 'go2menu' :
$mainframe->redirect ('index.php?option=com_menus&menutype='.$menu);
break;

case 'go2menuitem' :
$mainframe->redirect ('index.php?option=com_menus&menutype='.$menu.'&task=edit&id='.$menuid);
break;

case 'menulink' :
ContentHelper::menuLink ($redirect, $row->id);
break;

case 'resethits' :
ContentHelper::resetHits ($redirect, $row->id);
break;

case 'apply' :
$mainframe->redirect ('index.php?option=com_content&sectionid='.$redirect.'&task=edit&cid[]='.$row->id, $msg);
break;

case 'save' :
default :
$msg = JText::sprintf ('Successfully Saved Article', $row->title);
$mainframe->redirect ('index.php?option=com_content&sectionid='.$redirect, $msg);
break;
}
И сохраняем (не забываем сохранить в кодировке UTF-8, чтобы наша русская надпись алерт работала). В принципе сам материал сохраняется, но не дает выйти из режима редактирования материала пока не изменим заголовок

Вообще то есть такое событие onBeforeContentSave, можно оформить плагином, но я не придумал как без сохранения материала выдавать предупреждение и возвращать автора в материал без потери внесенного текста
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #27 : 15.08.2009, 13:21:32 »
Хорошая работа дружище! :D
Но я что-то туплю... при создании такого же материала вылезает тупо страница с жесткой ошибкой!
я заменил все что написано ниже switch ($task) на твой код,
до вот такого знака
/**
Правльно?

так так так... у меня почему то не выбирается категория при создании материала.... ее вобще нету...
В менеджере категорий она есть..... хммм
« Последнее редактирование: 15.08.2009, 13:27:07 от vasya000 »
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Дополнительные поля в материале
« Ответ #28 : 15.08.2009, 13:32:34 »
нет, не до /**, там же еще закрывающие скобки есть
приложил свой файл контроллера, попробуй заменить (не забывай про резервную копию оригинала)

[вложение удалено Администратором]
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vasya000

  • Захожу иногда
  • 109
  • 0 / 0
  • Реально Вася :)
Re: Дополнительные поля в материале
« Ответ #29 : 15.08.2009, 13:37:28 »
воткнул твой controller, тоже самое почему то...

вот мой контроллер!

[вложение удалено Администратором]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изображение-ссылка в материале

Автор Omedius

Ответов: 4
Просмотров: 1993
Последний ответ 02.07.2017, 21:11:10
от vipiusss
Как размещать h1 в header в материале?

Автор kirill-juk

Ответов: 12
Просмотров: 2417
Последний ответ 02.11.2016, 15:56:51
от kirill-juk
Фон текста в материале выделен стеклом за которым что то находится

Автор masfisha

Ответов: 3
Просмотров: 1326
Последний ответ 20.03.2015, 13:19:18
от umbabaraumba
В админке нет поля ввода логина/пароля

Автор menar

Ответов: 4
Просмотров: 1627
Последний ответ 25.02.2015, 21:51:37
от menar
Нету поля "Lightbox Rel параметр"

Автор slavikrovno

Ответов: 0
Просмотров: 952
Последний ответ 22.01.2014, 02:16:40
от slavikrovno