Про php код

  • 3 Ответов
  • 214 Просмотров

Diket

  • Сообщений: 14
    • Просмотр профиля
Про php код
« : 14 Июня 2018, 22:07:00 »
Здравствуйте!
Подскажите, пожалуйста, в каком файле или файлах находится код, который заменяет в шаблоне метки типа {site}, {dnmtop}, {top} и др. на контент?
Спасибо.

gamma

  • Сообщений: 86
  • люблю музон
    • Просмотр профиля
    • Полный доступ
Re: Про php код
« Ответ #1 : 15 Июня 2018, 16:00:42 »
Индексный файл мода выводит большинство переменных в файлы шаблона. Открываете файл и смотрите в какой tpl файл шаблона какие метки выводит. Например мод news - корневая папка/mod/news/index.php Нужно найти какие переменные выводятся в шаблон при открытии страницы новости. Ищем метку page
/**
 * Метка page
 * ----------- */
if ($to == 'page')
у меня это 974 строка. Номер строки может не совпадать так как я вносил некоторые изменения в код.
После этой строки формируются все переменные которые должны выводиться на странице полной новости, при этом нужно учтывать что основной файл шаблона полной новости read.tpl а для вывода на этой странице тэгов, рейтинга, медиапрезентациий и прочей дополнительной информации используются дополнительные файлы шаблона, такие как tags.tpl media.tpl и ещё парочка. Если внимательно просмотреть код то Вы увидите все дополнительные файлы.
// Шаблон
$ins['tempmedia'] = $tm->parsein($tm->create('mod/'.WORKMOD.'/media'));
То что выше это вывод в файл media.tpl который в свою очередь выводит медиагалерею в read.tpl
Ну а если нужны только те переменные которые выводяться в read.tpl  то этот список в коде такой
/**
* Шаблон
*/
$ins['template'] = $tm->parsein($tm->create('mod/'.WORKMOD.'/read'));
идём ещё ниже, проходим фрагменты кода которые выводят разные данные в разные переменные и всё это в коде прокомментировано таким образом
/**
* Вводное изображение
*/
/**
* Сообщения для пользователей
*/
И так далее. И наконец доходим до такого куска кода
/**
* Вывод
*/
$tm->parseprint(array
(
'icon' => $ins['icon'],
'cat' => $ins['cat'],
'link' => $ins['url'],
'title' => $api->siteuni($item['title']),
'subtitle' => $ins['subtitle'],
'date' => $ins['public'],
'public' => $lang['all_data'],
'langauthor' => $lang['author'],
'author' => $ins['author'],
'hits' => $lang['all_hits'],
'counts' => $item['hits'],
'image' => $ins['image'],
'textshort' => $ins['textshort'],
'textmore' => $ins['textmore'],
'textnotice'         => $ins['notice'],
'print_url' => $ins['print_url'],
'print' => $lang['print_link'],
'social' => $ins['social'],
'tags' => $ins['tags'],
'recommend' => $ins['rec'],
'search' => $ins['search'],
'media' => $ins['media'],
// comment
'comment' => $ins['comment'],
'comform' => $ins['comform'],
'ajaxbox' => $ins['ajaxbox'],
// rating
'ratings' => $ins['rate'],
'rating' => $ins['rating'],
'titlerate' => $ins['title_rate'],
'langrate' => $lang['all_rating']
),
$ins['template']);
Вот Вам все переменные.
Вы можете добавить другие переменные, в зависимости от того что Вам нужно. Для проверки как это работает можете добавить в эту колонку (только не в самом конце списка так как в конце строки есть запятая) тестовую переменную по аналогии.
'test'		=> $test,

Должно получится примерно так (кусочек кода)
                       
 'print_url'	=> $ins['print_url'],
'print' => $lang['print_link'],
                        'test' => $test,
'social' => $ins['social'],
После этого в файл read вставляете вывод этой переменной {test} - но так как у нас эта переменная пустая, то и выводится ничего не будет. Для того что бы проверить вывод перед началом вывода переменных, до этой строчки
/**
* Вывод
*/
$tm->parseprint(array
можем вставить код который будет передавать в переменную какое то значение.
$test = 'Это наша тестовая переменная';
Сохраните файл, опять откройте главную страницу новости - и Вы увидите в том месте где Вы разместили вывод переменной test тот текст который набран - Это наша тестовая переменная.
Это самый простейший способ вывести какую либо переменную. Ну а если Вам нужно вывести что то другое, например информацию из какой то ячейки таблицы, то это уже немного посложнее. Но если научится разбираться в коде то поймёте что таким образом можно вывести что угодно куда угодно.
Свободный фрилансер. 90% сайтов которые с успехом сдал под ключ на Даннео.

Diket

  • Сообщений: 14
    • Просмотр профиля
Re: Про php код
« Ответ #2 : 16 Июня 2018, 21:54:32 »
gamma, большое спасибо!
Не ожидал такого большого ответа. Читаю и пытаюсь разобраться.

gamma

  • Сообщений: 86
  • люблю музон
    • Просмотр профиля
    • Полный доступ
Re: Про php код
« Ответ #3 : 18 Июня 2018, 20:57:44 »
Нужно не просто читать а пробовать. Запустите Даннео на OpenServer или Денвер (OpenServer конечно лучше) и пробуйте. Так точно ничего не испортите. А когда добъётесь нужного Вам результата, можно переносить Ваше решение на рабочий сайт. Если поймёте логику работы движка, дальше будет проще и интереснее.
Свободный фрилансер. 90% сайтов которые с успехом сдал под ключ на Даннео.