Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Хаки Автозаполнение краткой новости (shortstory)?

Автозаполнение краткой новости (shortstory)?


     08.08.2013    Хаки    2674

вопрос
Здравствуйте!
Странно но почему то не нашел ни где способа, автоматического заполнения поля краткая новость, и в самом движке почему то это не реализовано!
Но вот поле description заполняется автоматом, а shortstory нет!
Как реализовать данную задачу не пойму, смотрел как dle генерирует описание, но не совсем понял?!
Поделитесь пжл кодом!

Ответил: Roman.NMSK


открываем engine\inc\addnews.php
ищем
if(trim($title) == "" or !$title)

перед ним добавляем
function crop_txt($text, $dlina) {
$text = stripslashes($text);
$text = str_replace("r", ' ', $text);
$text = str_replace("n", ' ', $text);
$text = preg_replace("#<.+?" . ">#i", " ", $text);
$text = preg_replace('([[:space:]]+)', ' ', $text);
    if (strlen($text) > $dlina) {
        if (substr ($text, $dlina - 3, 1) != " ") {
        $text = substr ($text, 0, $dlina - 2)."...";
        $pr = @strrpos($text, " ");
        $text = substr($text,0,$pr)."..."; }
            else{
                    $text = substr ($text, 0, $dlina - 3)."...";
                }
        $text=str_replace(",.", '.', $text);
        $text=str_replace(":.", '.', $text);
        $text=str_replace(";.", '.', $text);
        $text=str_replace("-.", '.', $text);
        $text=str_replace("!.", '!', $text);
        $text=str_replace("?.", '?', $text);
        $text=str_replace("....", '...', $text);
        }
    else { } return $text; }

if(trim($short_story) == "" or !$short_story) $short_story = crop_txt($full_story, 250);

вместо 250 вставляем свое количество символов для обрезки

Комментарии пользователей (21)

compis
2

37 | 38

compis - 8 августа 2013 16:58 - Юзер

Под словосочетанием Краткая новость вы имеете ввиду Краткое описание?

Тогда наймите или пригласите журналиста к себе на сайт, он будет "автоматически" заполнять это поле...

shortstory (оно же Краткое описание) заполняется ручками (или Парсером), а description формируется уже из того, чем заполнен shortstory

p.s. Или я вас не правильно понял.

muldy
5

59 | 26

muldy - 8 августа 2013 17:14 - Юзер

Да имел ввиду shortstory, но она не заполняется автоматом, а description берется из fullstory!

gerkules
10

gerkules - 8 августа 2013 17:30 - Юзер

Не по вопросу, а по теме... забавный факт. При создании публикации поле description заполняется из shortstory, а при редактировании уже существующей, пустое поле description заполняется из fullstory...

gerkules
10

gerkules - 8 августа 2013 17:31 - Юзер

ТОчнее, при нажатии кнопки Сгенерировать описание - заполняется из fullstory.

muldy
5

59 | 26

muldy - 8 августа 2013 17:38 - Юзер

gerkules,
Так в том то и проблема, требуется автоматом заполнять shortstory, забрав текст из fullstory!

kovalenko3331
3

129 | 88

kovalenko3331 - 8 августа 2013 22:43 - Юзер

А почему бы наоборот не заполнять? Заполняйте shortstory и текст будет дублироваться в fullstory.

muldy
5

59 | 26

muldy - 8 августа 2013 22:47 - Юзер

kovalenko3331,
а зачем? Логика то банальна, заполняется основная часть текста в fullstory, а использование shortstory нужно только для вывода превью новости!

Roman.NMSK
10

95 | 34

Roman.NMSK - 9 августа 2013 12:48 - Юзер

***Комментарий удален***

Roman.NMSK
10

95 | 34

Roman.NMSK - 9 августа 2013 13:11 - Юзер

***Комментарий удален***

muldy
5

59 | 26

muldy - 9 августа 2013 14:08 - Юзер

Roman.NMSK,Спасибо попробую отпишусь!

muldy
5

59 | 26

muldy - 12 августа 2013 10:07 - Юзер

Roman.NMSK, Все работает, спасибо! Добавьте пжл ответ!

ПафНутиЙ
1065

3394 | 2433

ПафНутиЙ - 12 августа 2013 10:32 - Админ

Добавил комментарий в ответ.

Каков вопрос - таков и ответ. Просто помните об этом.

muldy
5

59 | 26

muldy - 12 августа 2013 12:49 - Юзер

ПафНутиЙ, спасибо!
Думаю много кому пригодится функция!

Roman.NMSK
10

95 | 34

Roman.NMSK - 12 августа 2013 16:47 - Юзер

небольшой косяк в функции. вот это:
$text = str_replace("r", ' ', $text);
$text = str_replace("n", ' ', $text);

заменить на это:
$text = str_replace(array("\r","\n"),"",$text);

shmel1985
2

146 | 63

shmel1985 - 12 августа 2013 18:15 - Юзер

открываем engine\inc\addnews.php

Такой строки там нет
if(trim($title) == "" or !$title)

shim
68 | 28

shim - 12 августа 2013 18:23 - Юзер

if( trim( $title ) == "") {
        msg( "error", $lang['addnews_error'], $lang['addnews_alert'], "javascript:history.go(-1)" );
    }

shmel1985
2

146 | 63

shmel1985 - 12 августа 2013 18:25 - Юзер

shim Спасибо

muldy
5

59 | 26

muldy - 16 августа 2013 16:44 - Юзер

Обновите ответ:
Вместо

    $text = str_replace(array("\r","\n"),"",$text);


поменять на


$text = str_replace(array("\r","\n", "\rn"),"",$text);

doktorpull
6

98 | 5

doktorpull - 30 августа 2014 01:10 - Юзер

а как сделать чтобы он брал только первый абзац?

AndreyKAZ
16 | 1

AndreyKAZ - 31 июля 2015 07:51 - Юзер

Тоже волнует этот вопрос. Как короткую новость автоматически заполнять из первых N-символов полной новости?
Функция в ответе на вопрос ТС не работает на DLE 10.4, 10.5(
Заранее спасибо!

shim
68 | 28

shim - 22 октября 2015 13:23 - Юзер

а как сделать чтобы он брал не только текст,но и картинку ({image-1})?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы