• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Доска объявлений на dle без модуля

Посмотри, еще это модуль если не смотрел Для просмотра ссылки Войди или Зарегистрируйся, это проще чем дле ковырять и перепиливать под нужды...
 
Делаешь категории под нужные объявления, затем вводишь доп поля под разные параметры (ну там если это недвижимость, то метраж и кол-во комнат, если телефоны то размер экрана и т.п.), затем делаешь tpl файлики под формы добавления объявлений к каждой категории, создаешь страницы под каждую категорию и им присваиваешь в админке дле эти tpl, и так же само с выводом, для каждой категории делаешь свои tpl и их там же в админке дле к категориям присваиваешь.

Плюсы - без сторонних модулей все будет работать на доп. полях, юзеры будут заполнять при добавлении только необходимые поля.
Минусы - у тебя в админке список новостей и объявлений все будет в куче, при добавлении новости ты тоже будешь видеть все все доп поля, но это быстро привыкаешь, вот демка как это работает:
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Делаешь категории под нужные объявления, затем вводишь доп поля под разные параметры (ну там если это недвижимость, то метраж и кол-во комнат, если телефоны то размер экрана и т.п.), затем делаешь tpl файлики под формы добавления объявлений к каждой категории, создаешь страницы под каждую категорию и им присваиваешь в админке дле эти tpl, и так же само с выводом, для каждой категории делаешь свои tpl и их там же в админке дле к категориям присваиваешь.

Плюсы - без сторонних модулей все будет работать на доп. полях, юзеры будут заполнять при добавлении только необходимые поля.
Минусы - у тебя в админке список новостей и объявлений все будет в куче, при добавлении новости ты тоже будешь видеть все все доп поля, но это быстро привыкаешь, вот демка как это работает:

Мне кажется проще без доп полей - лишнее повырезал. я уже почти все сделал, осталось сделать добавление фото и срок публикации.
вот что получилось на данный момент
Скрытое содержимое доступно для зарегистрированных пользователей!


Если получится все доделать, напишу урок по созданию доски на dle без модуля. Думаю пригодится
 
Стандартным функционалом это не сделать. На первой странице предложили хак - это реально то, что нужно... Либо сделать тоже самое ручками, поправим TPL и PHP немного...

Но я бы делал просто загрузку фоток, как у новостей (стандартный загрузчик), а выводил бы через {image-1} как хочется... А в настройках ограничил бы 1 фотку на статью - вроде есть такая...
 
Стандартным функционалом это не сделать. На первой странице предложили хак - это реально то, что нужно... Либо сделать тоже самое ручками, поправим TPL и PHP немного...

Но я бы делал просто загрузку фоток, как у новостей (стандартный загрузчик), а выводил бы через {image-1} как хочется... А в настройках ограничил бы 1 фотку на статью - вроде есть такая...

стандартный загрузчик немного сложноват для простого народа (проверял в своем городе), думаю остановиться на выше предложенном модуле.
а что насчет сайт
? можешь сказать как там реализована загрузка фото ? модом или все же ковыряли движок ?
 
Какая разница - ковыряение движка и есть мод... Просто не оформленный отдельным файлом, с инструкцией и т.д., а тупо правка кода.
Уже сказал - стандартными средствами это не сделать, допполями - не сделать. Надо в любом случае править код.
 
Нашел в интернете небольшой хак от toxx на эту тему. Правда хак писался под версию 8x. Попытался поставить на свою 9.8 - результат в принципе есть) хак работает, а именно загружает картинки с кнопки обзор и выводит их в краткую новость (в полную новость почему то не выводит)
и еще, если картинок меньше трех выводится надписи от незагруженных картинок.
Код:
{poster2}{poster3}
я думаю немного адаптировать под версию 9.8 и он будет нормально работать! но у меня к сожалению не хватает знаний.Может кто разберется.
Выкладываю инструкцию с хаком
Пункт 1.1

Вставляем в addnews.php (engine/modules) после
КОД: Для просмотра ссылки Войди или Зарегистрируйся
$db->query( "INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_rate, allow_br, flag, tags) values ('$thistime', '$member_id[name]', '$short_story', '$full_story', '$filecontents', '$title', '', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_rating', '$allow_br', '1', '" . $_POST['tags'] . "')" );

$row['id'] = $db->insert_id();

Вот это...
КОД: Для просмотра ссылки Войди или Зарегистрируйся
$imags_id=0;
$idpost = $row['id'];
while ($imags_id<=3) {
$imags_id++;
$allowed_extensions = array ("gif", "jpg", "png", "jpe", "jpeg" );
if ((isset($_FILES['post_add_'.$imags_id.'']) && $_FILES['post_add_'.$imags_id.'']!='')) {

$file_prefix = time() + rand( 1, 100 );
$file_prefix .= "_";
define( 'FOLDER_PREFIX', date( "Y-m" ) );
if( ! is_dir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX ) ) {
@mkdir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX, 0777 );
@chmod( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX, 0777 );
@mkdir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . "/thumbs", 0777 );
@chmod( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . "/thumbs", 0777 );
}
$config_path_image_upload = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . "/";

$current_image = 'post_add_'.$imags_id.'';
$image = $_FILES[$current_image]['tmp_name'];
$image_name = $_FILES[$current_image]['name'];
$image_size = $_FILES[$current_image]['size'];
$error_code = $_FILES[$current_image]['error'];

$img_name_arr = explode( ".", $image_name );
$type = totranslit( end( $img_name_arr ) );
if( $image_name != "" ) {
$curr_key = key( $img_name_arr );
unset( $img_name_arr[$curr_key] );
$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;
}

if ( in_array( strtolower( $type ), $allowed_extensions) ) {

@move_uploaded_file( $image, $config_path_image_upload . $file_prefix . $image_name );

if( @file_exists( $config_path_image_upload . $file_prefix . $image_name ) ) {
@chmod( $config_path_image_upload . $file_prefix . $image_name, 0666 );
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_images where author = '{$member_id[name]}' AND news_id = '$idpost'" );
if( ! $row['count'] ) {
$added_time = time() + ($config['date_adjust'] * 60);
$inserts = FOLDER_PREFIX . "/" . $file_prefix . $image_name;
$db->query( "INSERT INTO " . PREFIX . "_images (images, author, news_id, date) values ('$inserts', '{$member_id[name]}', '$idpost', '$added_time')" );
} else {
$row = $db->super_query( "SELECT images FROM " . PREFIX . "_images where author = '{$member_id[name]}' AND news_id = '$idpost'" );
if( $row['images'] == "" ) $listimages = array ();
else $listimages = explode( "|||", $row['images'] );
foreach ( $listimages as $dataimages ) {
if( $dataimages == FOLDER_PREFIX . "/" . $file_prefix . $image_name ) $error_image = "stop";
}
if( $error_image != "stop" ) {
$listimages[] = FOLDER_PREFIX . "/" . $file_prefix . $image_name;
$row['images'] = implode( "|||", $listimages );
$db->query( "UPDATE " . PREFIX . "_images set images='{$row['images']}' where author = '{$member_id[name]}' AND news_id = '$idpost'" );
}
}
if( @file_exists( ENGINE_DIR . '/classes/thumb.class.php' ) ) {
include_once ENGINE_DIR . '/classes/thumb.class.php';
} else (include_once ENGINE_DIR . '/inc/makethumb.php');
$tumb_ok = false;
$_POST['make_thumb'] = true;
$_POST['make_watermark'] = $config['allow_watermark'];
if( isset( $_POST['make_thumb'] ) ) {
$thumb = new thumbnail( $config_path_image_upload . $file_prefix . $image_name );
if( $thumb->size_auto( $config['max_image'], $_POST['t_seite'] ) ) {
$thumb->jpeg_quality( $config['jpeg_quality'] );
if( $config['allow_watermark'] == "yes" and $_POST['make_watermark'] == "yes" ) $thumb->insert_watermark( $config['max_watermark'] );
$thumb->save( $config_path_image_upload . "thumbs/" . $file_prefix . $image_name );
}
if( @file_exists( $config_path_image_upload . "thumbs/" . $file_prefix . $image_name ) ) $tumb_ok = true;
@chmod( $config_path_image_upload . "thumbs/" . $file_prefix . $image_name, 0666 );
}
$config['max_up_side'] = intval( $config['max_up_side'] );
if( ($config['allow_watermark'] == "yes" and $_POST['make_watermark'] == "yes") or $config['max_up_side'] ) {
$thumb = new thumbnail( $config_path_image_upload . $file_prefix . $image_name );
$thumb->jpeg_quality( $config['jpeg_quality'] );
if( $config['max_up_side'] ) $thumb->size_auto( $config['max_up_side'] );
if( $config['allow_watermark'] == "yes" and $_POST['make_watermark'] == "yes" ) $thumb->insert_watermark( $config['max_watermark'] );
$thumb->save( $config_path_image_upload . $file_prefix . $image_name );
}
}
}

}
}


Пункт 1.2

Так же:
Нужно добавить в строке
КОД: Для просмотра ссылки Войди или Зарегистрируйся
else $script .= "<form method=post name=\"entryform\" id=\"entryform\" onsubmit=\"if(document.entryform.title.value == '' || document.entryform.short_story.value == ''){alert('$lang[add_err_7]');return false}\" action=\"\">";

Вот это.
КОД: Для просмотра ссылки Войди или Зарегистрируйся
enctype=\"multipart/form-data\"

получится примерно так
КОД: Для просмотра ссылки Войди или Зарегистрируйся
else $script .= "<form method=post name=\"entryform\" id=\"entryform\" onsubmit=\"if(document.entryform.title.value == '' || document.entryform.short_story.value == ''){alert('$lang[add_err_7]');return false}\" action=\"\" enctype=\"multipart/form-data\">";


Пункт 2

в show.full.php(engine/modules) после

КОД: Для просмотра ссылки Войди или Зарегистрируйся
while ( $row = $db->get_row( $sql_result ) ) {


добавляем

КОД: Для просмотра ссылки Войди или Зарегистрируйся
////////Вставка постера
$sql_result2 = $db->query( "SELECT images, news_id FROM " . PREFIX . "_images where news_id = '{$row['id']}'" );
$poster = $db->get_row($sql_result2);
if ($poster['images'] != "") {
$scrsList = explode('|||',$poster['images']);
$scrs = '';
$cntscrs = count($scrsList);
$ai = 0;

foreach ($scrsList as $scr) {
$ai++;
$scr = trim($scr);
$poster_temp = explode("/",$scr);
$poster_name = $poster_temp[1];
$poster_data = substr($scr,0,8);

if( @file_exists( ROOT_DIR.'/uploads/posts/'.$poster_data.'thumbs/'.$poster_name ) ){
$_POST['poster_'.$ai] = <<<HTML
<a href="{$config ['http_home_url']}uploads/posts/{$poster_data}{$poster_name}" onclick="return hs.expand(this)"><img height="200px" src="{$config ['http_home_url']}uploads/posts/{$poster_data}thumbs/{$poster_name}"></a>
HTML;
} else {$_POST['poster_'.$ai] = <<<HTML
<a href="{$config ['http_home_url']}uploads/posts/{$poster_data}{$poster_name}" onclick="return hs.expand(this)"><img height="200px" src="{$config ['http_home_url']}uploads/posts/{$poster_data}/{$poster_name}"></a>
HTML;
}


if ($ai<$cntscrs) $scrs .= '';
if ($ai=="3") break;
}
unset($scrsList);
}
if (empty($_POST['poster_1'])){
$_POST['poster_1'] = 'Для просмотра ссылки Войди или Зарегистрируйся /*Для просмотра ссылки Войди или Зарегистрируйся заменяем данную ссылку на вашу ссылку на картинку noimages*/
}
if (empty($_POST['poster_2'])){
$_POST['poster_2'] = 'Для просмотра ссылки Войди или Зарегистрируйся /*Для просмотра ссылки Войди или Зарегистрируйся заменяем данную ссылку на вашу ссылку на картинку*/
}if (empty($_POST['poster_3'])){
$_POST['poster_3'] = 'Для просмотра ссылки Войди или Зарегистрируйся /*Для просмотра ссылки Войди или Зарегистрируйся заменяем данную ссылку на вашу ссылку на картинку*/
}

$tpl->set ( '{poster1}', $_POST['poster_1']);
$tpl->set ( '{poster2}', $_POST['poster_2']);
$tpl->set ( '{poster3}', $_POST['poster_3']);
////////Вставка постера


Пункт 3

в show.short.php(engine/modules) после

КОД: Для просмотра ссылки Войди или Зарегистрируйся
while ( $row = $db->get_row( $sql_result ) ) {


Добавляем

КОД: Для просмотра ссылки Войди или Зарегистрируйся
////////Вставка постера
$sql_result2 = $db->query( "SELECT images, news_id FROM " . PREFIX . "_images where news_id = '{$row['id']}'" );
$poster = $db->get_row($sql_result2);
if ($poster['images'] != "") {
$scrsList = explode('|||',$poster['images']);
$scrs = '';
$cntscrs = count($scrsList);
$ai = 0;

foreach ($scrsList as $scr) {
$ai++;
$scr = trim($scr);
$poster_temp = explode("/",$scr);
$poster_name = $poster_temp[1];
$poster_data = substr($scr,0,8);
$scrs = "<a href='{$config['http_home_url']}uploads/posts/{$poster_data}{$poster_name}' onclick='return hs.expand(this)'><img height='200px' src='{$config ['http_home_url']}uploads/posts/{$poster_data}{$poster_name}'></a>";
$tpl->set ( '{poster'.$ai.'}', $scrs);
if ($ai<$cntscrs) $scrs .= '';
if ($ai=="3") break;
}
unset($scrsList);
}else {
$ai=0;
while ($ai<4){
$ai++;
$tpl->set ( '{poster'.$ai.'}', "");
}
}
////////Вставка постера


Пункт 4

Теперь переходим к своим шаблонам

в addnews.tpl вставляем
КОД: Для просмотра ссылки Войди или Зарегистрируйся
<input name="post_add_1" maxlength="250" class="f_input" type="file">
<input name="post_add_2" maxlength="250" class="f_input" type="file">
<input name="post_add_3" maxlength="250" class="f_input" type="file">


ну и в fullstory.tpl и такой же в shortstory.tpl
КОД: Для просмотра ссылки Войди или Зарегистрируйся
{poster1}{poster2}{poster3}


На этом всё.
 
Растягивается шаблон при добавлении длинного объявления(новости) не могу найти в чем проблема!
пример
Скрытое содержимое доступно для зарегистрированных пользователей!

Может кто знает где копать ?
 
Вы ввели не слишком длинное объявление, а слишком длинное слово. HTML устроен таким образом, что перенос слова не возможен. Т.е. если будет хотя бы 1 пробел - это разные слова и они будут опубликованы на разных строках, если же пробелов нет - это будет длинная простыня в 1 строчку.

Для тестирования дизайна и функционирования CMS используйте Для просмотра ссылки Войди или Зарегистрируйся - генератор текста-рыбы. В видеоуроках я об этом уже говорил.
 
Скрытое содержимое доступно для зарегистрированных пользователей!

Вроде все доделал - осталось только одна функция которою необходимо сделать для доски "объявлений на dle" - срок публикации объявления. Что бы при публикации можно было выбрать срок (неделя,2е недели, месяц 3 месяца.) после чего объявление должно удалятся . Искал мод в интернете ничего подобного не нашел. Если у кого есть мысли по этому поводу буду рад выслушать.
 
Назад
Сверху