1

Тема: 4 дополнительных поля MySQL! [хак]

Хак для версии Strawberry 1.1.1 MySQL
Позволяет добавить в админку 4 дополнительных поля, информация из которых заносится в MySQL базу
http://i031.radikal.ru/0909/dd/c97c8c350f99t.jpg
Виды полей и их названия редактируются в файлах addnews.mdu и editnews.mdu

Установка:
1. Сохранить имеющиеся файлы на всякий пожарный.
2. Перенести папку inc в каталог Strawberry с заменой файлов.
3. В MySQL базе выполнить скрипт dop.sql

Скачать файл!

P.S. Для вывода в шаблоне использовать:

<? if ($tpl['post']['dop1']){ ?>
Дополнительное поле1: 
<?=$tpl['post']['dop1']; ?>
<? } ?>

<? if ($tpl['post']['dop2']){ ?>
Дополнительное поле2: 
<?=$tpl['post']['dop2']; ?>
<? } ?>

<? if ($tpl['post']['dop3']){ ?>
Дополнительное поле3: 
<?=$tpl['post']['dop3']; ?>
<? } ?>

<? if ($tpl['post']['dop4']){ ?>
Дополнительное поле4: 
<?=$tpl['post']['dop4']; ?>
<? } ?>
Strawberry 1.1.1

Re: 4 дополнительных поля MySQL! [хак]

Супер! Спасибо. Было бы к этому хаку ещё возможность загнать старые доп.поля в эти 4 новых - цены бы не было.

3

Re: 4 дополнительных поля MySQL! [хак]

cmd, это не проблема!!!! wink
Нужно только при помощи регулярных выражений спарсировать старую базу ключ.слов в базу экспорта MySQL.
Как вручную сделать - знаю... А вот как автоматизировать этот процесс пока ума не приложу... smile

К примеру, у вас в файле xfields-data.txt есть такие значения:
70|>|ddd|1111||vvv|5555||ggg|2009||jj|000|
- где 70 - это ID новости
ddd - имя первого поля, vvv - второго, ggg - третьего, jj - четвертого
1111 - данные первого поля, 5555 - второго, 2009 - третьего, 000 - четвертого

В MySQL дополнительные поля идут в окончании таблицы `cute_news`, со значениями dop1, dop2, dop3, dop4
При парсинге базы требуется заменить последние 4 (или если доп полей меньше 3-2-1) поля на уникальные значения из текстовой базы.

Чтобы было примерно так:
INSERT INTO `cute_news` VALUES (1253370155, 'test', 'Проверка', 4, 4, '', '', 'proverka', 77, 1, 0, 0, 0, '', '', 0, 0, '', '1111', '5555', '2009', '000');

Где:

INSERT INTO `cute_news` VALUES ({время добавления}, '{автор}', '{title}', {short}, {full}, '{avatar}', '{category}', '{url}', {ID}, {просмотров}, {комментариев}, {hidden}, {sticky}, '{keywords}', '{type}', {parent}, {level}, '{password}', '{первое значение}', '{второе значение}', '{третье значение}', '{четвертое значение}');

После этого перезалить базу и всё готово! wink
Хотя, возможно, есть способ более лёгкий... Если кто найдет, то пусть поделиться! smile

Strawberry 1.1.1

Re: 4 дополнительных поля MySQL! [хак]

>100 новостей
руками долго, а ума на скрипт не хватит

Re: 4 дополнительных поля MySQL! [хак]

Немного не в тему - но просто совет.
Посмотрите установочный файл для Strawberry 1.2 beta 3.
А именно области с explode и запросами в базу. Там есть практически все необходимое.

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

6

Re: 4 дополнительных поля MySQL! [хак]

Посмотрел... Только вроде для доп полей поддержки переноса нет... Или есть?

А на счет запроса... То вот пример обновления базы:
...где в таблице cute_news для нужного ID, к примеру 72, вносятся (любые) значения в столбцы: dop1, dop2, dop3, dop4:

UPDATE `ИМЯ-БАЗЫ`.`cute_news` SET `dop1` = 'test1',
`dop2` = 'test2',
`dop3` = 'test3',
`dop4` = 'test4' WHERE `cute_news`.`id` =72 LIMIT 1 ;

Код экспорта в базу можно сделать самим при помощи нашей любимой клубнички!
Для этого понадобиться сделать отдельный подключаемый скрипт с шаблоном вывода краткой новости:

UPDATE `ИМЯ-БАЗЫ`.`cute_news` SET `dop1` = '<?=$tpl[xfvalue_X1]; ?>',
`dop2` = '<?=$tpl[xfvalue_X2]; ?>',
`dop3` = '<?=$tpl[xfvalue_X3]; ?>',
`dop4` = '<?=$tpl[xfvalue_X4]; ?>' WHERE `cute_news`.`id` =<?=$tpl['post']['id']; ?> LIMIT 1 ;

- где "Имя базы" меняете на нужную вам базу, а X1-X4 на название своих доп.полей.
Выводите сразу все новости через один скрипт, а результат конвертируйте в базу.

Вот и все дела! wink

Отредактировано UltraPixel (25 Sep 2009 18:16:41)

Strawberry 1.1.1

Re: 4 дополнительных поля MySQL! [хак]

так сделай массив для переноса для каждой новости автоматически...

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: 4 дополнительных поля MySQL! [хак]

UltraPixel пишет:

P.S. Для вывода в шаблоне использовать:

<? if ($tpl['post']['dop1']){ ?>
Дополнительное поле1: 
<?=$tpl['post']['dop1']; ?>
<? } ?>

<? if ($tpl['post']['dop2']){ ?>
Дополнительное поле2: 
<?=$tpl['post']['dop2']; ?>
<? } ?>

<? if ($tpl['post']['dop3']){ ?>
Дополнительное поле3: 
<?=$tpl['post']['dop3']; ?>
<? } ?>

<? if ($tpl['post']['dop4']){ ?>
Дополнительное поле4: 
<?=$tpl['post']['dop4']; ?>
<? } ?>

Как сделать выпадающее меню в дополнительном поле? (в файле addnews.mdu)

Так не получается:

<!-- дополнительное поле 2 -->
<fieldset id="dop2"><legend><?=t('Дополнительное поле2'); ?></legend>
<select name="dop2">
<option value="1" selected>1111</option>
<option value="2">2222</option>
<option value="3">333</option>
</select></fieldset>

.... точнее так получается выпадающее меню, но не врубаюсь как передать значение.
ЗЫ PHP знаю на уровне ученика, так что не ругайте очень сильно.

Отредактировано jay_b (28 Sep 2009 21:08:24)

Использую - Strawberry 1.1.1

9

Re: 4 дополнительных поля MySQL! [хак]

Addnews:

<fieldset id="dopinfo"><legend><?=t('Заголовок доп поля'); ?></legend>

<select name="dop2" id="dop2">
<option value="То, что надо1">Описание 1</option>
<option value="То, что надо2" selected>Описание 2 выделено</option>
<option value="То, что надо3">Описание 3</option>
</select>
</fieldset>

Editnews:

<fieldset id="dopinfo"><legend><?=t('Заголовок доп поля'); ?></legend>

<select name="dop2" id="dop2">
<option value="<?=htmlspecialchars(replace_news('admin', $row['dop2'])); ?>" selected="selected"><?=htmlspecialchars(replace_news('admin', $row['dop2'])); ?> - текущий</option>

<option value="То, что надо1">Описание 1</option>
<option value="То, что надо2">Описание 2</option>
<option value="То, что надо3">Описание 3</option>
</select>
</fieldset>

Отредактировано UltraPixel (29 Sep 2009 01:25:36)

Strawberry 1.1.1