Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Автозаполнение краткой новости (shortstory)?

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


     08.08.2013    shortstory, автозаполнение    Все вопросы » Хаки    4623

вопрос
Здравствуйте!
Странно но почему то не нашел ни где способа, автоматического заполнения поля краткая новость, и в самом движке почему то это не реализовано!
Но вот поле 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
Юзер

compis - 8 августа 2013 16:58 -

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

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

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

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

muldy
Юзер

muldy - 8 августа 2013 17:14 -

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

gerkules
Юзер

gerkules - 8 августа 2013 17:30 -

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

gerkules
Юзер

gerkules - 8 августа 2013 17:31 -

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

muldy
Юзер

muldy - 8 августа 2013 17:38 -

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

kovalenko3331
Юзер

kovalenko3331 - 8 августа 2013 22:43 -

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

muldy
Юзер

muldy - 8 августа 2013 22:47 -

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

Roman.NMSK
Юзер

Roman.NMSK - 9 августа 2013 12:48 -

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

Roman.NMSK
Юзер

Roman.NMSK - 9 августа 2013 13:11 -

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

muldy
Юзер

muldy - 9 августа 2013 14:08 -

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

muldy
Юзер

muldy - 12 августа 2013 10:07 -

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

ПафНутиЙ
Админ

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

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

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

muldy
Юзер

muldy - 12 августа 2013 12:49 -

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

Roman.NMSK
Юзер

Roman.NMSK - 12 августа 2013 16:47 -

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

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

shmel1985
Юзер

shmel1985 - 12 августа 2013 18:15 -

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

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

shim
Юзер

shim - 12 августа 2013 18:23 -

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

shmel1985
Юзер

shmel1985 - 12 августа 2013 18:25 -

shim Спасибо

muldy
Юзер

muldy - 16 августа 2013 16:44 -

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

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


поменять на


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

doktorpull
Юзер

doktorpull - 30 августа 2014 01:10 -

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

AndreyKAZ
Юзер

AndreyKAZ - 31 июля 2015 07:51 -

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

shim
Юзер

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

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

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

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

наверх