Страниц (13): В начало « ... 5 6 7 8 [9] 10 11 12 13 »
Найдено сообщений: 187 |
Flat |
Отправлено: 27 сентября 2018 — 08:27 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Переделал всё обратно. Действительно - так лучше. Это кстати соответствует одной из концепций MVC. Здесь также можно менять шаблоны путём переключения функций.
index файл сделал. Подключение модулей в нём работает. Подключаю тестовый модуль, в сё в порядке. Все папки с модулями, шаблонами и языками распределил, всё работает. То есть основную структуру сделал. Теперь можно спокойно заниматься наворачиванием модулей по ходу их тестируя почти готовым ядром. |
Flat |
Отправлено: 26 сентября 2018 — 09:15 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:Я грешу на 2мода, мод Группы, и мод Расширенные почтовые функции, вот они могли создать проблему с отправкой писем из под гостя.
Бегло просмотрел. Там долго надо разбираться. Плохо то, что все эти моды жёстко прописываются в системе, и в результате получается совсем другой движок.. Одним словом отсутствует определённый стандарт, и у всех разные движки. Моды часто меняют само ядро форума, а это плохо.. |
Flat |
Отправлено: 26 сентября 2018 — 08:38 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
NordWest пишет:Если я правильно понял вашу идею, то вы разбиваете шаблон на блоки, которые загружаете в память в виде текстового массива. Затем движок имеет возможность манипулировать этими блоками как пожелает программист.
Всё верно.
NordWest пишет:И ещё... представьте, что вы написали функцию, которая из предложенного вами массива формирует код и всё успешно работает. Потом вам понадобилось внести изменения в середине шаблона и нумерация строк (а следовательно и индексация массива) у вас изменится. Что в этом случае произойдет. Нужно будет полностью переиндексировать функцию вывода причем малейшая ошибка будет приводить к тому, что дизайн будет просто рассыпаться.
Я и сам уже думал об этом..
Первоначальный вариант, который я затем переделал на предложенный, был похож на темплейты из форумного движка SMF. Там они реализованы в виде php-шных функций. Вот пример первоначального(первого) варианта:
CODE:function exbb_showLogoStrip()
{
global $Config, $ContentBuf, $Skin;
$ContentBuf.='<table width="100%" id="logostrip" cellspacing="0" cellpadding="0"><tr><td><a href="index.php" title="'.$Config[1].'"><img src="./templates/'.$Skin.'/im/logo.gif" alt="'.$Config[1].'" width="207" height="52" border="0" /></a></td><td valign="bottom" align="right"><a href="index.php" style="margin-right:20px;color:#ffffff">'.$Config[1].'</a></td></tr></table>';
}
Так как вставить что-либо в такой шаблон затруднительно, то я пришёл к вышеозвученному решению в виде функции:
CODE:function exbb_showLogoStrip()
{
global $TemplatesPath, $Config, $ContentBuf, $Skin;
$tpl=file($TemplatesPath.$Skin.'/logostrip.html');
$ContentBuf.=$tpl[0].$Config[1].$tpl[1].$Skin.$tpl[2].$Config[1].$tpl[3].$Config[1].$tpl[4];
}
и отдельного файла шаблона, который можно скачать, изменить, и уже изменённый загрузить обратно в файл.
Вроде бы всё в порядке? Однако меня терзают такие же сомнения, которые терзают и вас.. Действительно, эти оба файла жёстко связаны с друг другом, и любой их разрыв кажется неправильным.. Но менять шаблоны ведь надо? Недавний случай с кнопкой показал это..
Единственный вариант в этом случае менять всю функцию первого варианта на другую через config файлы, при этом старая функция работать перестанет, а вывод пойдёт через новую. А старая пусть валяется в коде, может когда-нибудь пригодится если откатить новый мод назад.. Так что вы абсолютно правы, - менять-то придётся оба файла, а это ой как неудобно! Так что идей-ка то сыровата.. |
Flat |
Отправлено: 25 сентября 2018 — 09:14 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Для тех кому интересно прочитайте статью "Моё разочарование в софте" на хабре:здесь
Проблема в том, что фреймворки с каждым днём становятся всё сложней, глючней, и медленней. Причину я вижу именно в концепции опп, которая на аппаратном уровне задействует механизмы раздувающие код до ужасающих размеров, хотя программисту это и не видно, поэтому всё как бы нормально(для программиста). А для потребителя наступает полный ужас. Вы хотите жить в этом ужасе? Я лично - нет. Вам может лично не нужен движок на 100% свободный от ооп, потому что вам кажется что ооп лично вам что-то такое предоставит.. Но предоставить оно может только тормоза и ещё раз тормоза, и в итоге ваш скрипт просто отключат от сервера на котором он крутится по исчерпании лимита времени его работы.. Зато это может понадобится другим, которым важна простота, стабильность в работе и скорость, а этого ой как недостаёт в современном мире. Пускай таких как я одиночек считают ретроградами, но я уверен - за нами будущее, ибо весь этот софт напичканный непонятно чем, временным, вскоре исчезнет потому-что идёт тупиковым путём, а вещи сделанные с прицелом на будущее, "не модные" останутся. |
Flat |
Отправлено: 25 сентября 2018 — 08:26 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
1Bot пишет:Что только люди не придумают, лишь бы MVC не использовать.
Концепция "модель-вид-контролёр" это чистая оопная концепция, а меня от ооп воротит: слишком много передумано по этому поводу. Поверьте: Гради Буча я читал, и много чего ещё. ООП это мода. Она пройдёт. И кстати уже проходит, так как многие уже поняли его недостатки. Увы, новый двиг будет без ооп, но с нечто более важным чего нет в других.. Keep it simple, stupid. - это так называемый kees-принцип, как можно более проще, но не более того.
Что касается темплейтов, то я ещё в поиске, хотя сильно соблазняет предложенный вариант, из-за возможности изменений сторонними функциями, и похоже, что это преимущество перевесит все сомнения. |
Flat |
Отправлено: 24 сентября 2018 — 09:58 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет: Даже если всё заработает как надо, мне то от этого легче не станет, от этого работать именно на моём движке не будет.
А у вас какая версия форума стоит? |
Flat |
Отправлено: 24 сентября 2018 — 09:32 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Parapsixolog пишет: я не совсем уловил, как это будет реализоваться на практике
А вот так и будет, как я написал. Более того я часть такого уже реализовал в функциях вывода шапки форума, логоменю и меню пользователя. Работа над новым ядром идёт полным ходом, и мне всё настолько нравится и я настолько понял как всё должно быть, что особых задержек быть не должно, так как концепция ясна. Причём меню выводится через config файлы, поэтому через админку можно менять взаимное расположение пунктов меню, удалять, изменять, добавлять новые пункты.. Более того, ввёл языковую поддержку, как в этом движке, однако опять по другому.. Теперь пользователь может выбирать любой установленный язык интерфейса форума, а админ может из админки запрещать выбор пользователю или разрешать его. Да, пришлось пойти на усложнение кода из-за темплейтов и языков, но сегодня без этого никуда. Делать так делать.
NordWest пишет:Там не каша - там чистый HTML с вкраплениями PHP.
А вот эти-то вкрапления и губят всю малину. Попробуйте изменить функцию без изменения темплейта если там будут затронуты общие переменные. Если отделить мух от котлет, то это станет возможным.
NordWest пишет:При желании код PHP легко убирается из шаблонов в код движка без всяких нововведений, а потому считаю данную проблему надуманной.
Ну, без плясок с бубном не получится. Самая главная проблема в том, что файлы шаблонов невозможно модифицировать сторонними функциями, например функциями из плагина. Сейчас это невозможно. Приведу пример. Вот мы тут с Parapsixolog , разбирали одну задачу. Нужно было вставить фиксированную кнопку в page_tail.php. Нужно было вставить в него блок <div>. Сейчас это пришлось вставлять руками и лезть в сырой код. И ладно, что Parapsixolog , имеет опыт подобного, и не боится туда лезть, а представим менее опытного человека?. Если бы код и данные были разделены, то я бы написал функцию, которая сама бы изменила этот шаблон, а юзеру достаточно было бы скачать плагин. Поэтому имеет смысл это осуществить. |
Flat |
Отправлено: 23 сентября 2018 — 08:16 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:такой вот строки нет:
Есть такая строка в том варианте файла mailform.tpl, который я приводил выше, а не в"чистом" файле движка. Вот в том моём варианте эта строка есть. Её находим и меняем. Я предупреждал:
Flat пишет:Меняем всё что там находится на мой вариант, который я приводил выше.
просто вы уже меняли в повторно изменённом файле вот и вышла неувязочка.
Так, чтобы больше не было разночтений приведу уже изменённый вариант этого файла:
CODE:<?php
echo <<<DATA
<br>
<div id="navstrip" align="left">
<img src="./templates/InvisionExBB/im/nav.gif" border="0" alt=">" /> <a href="index.php">{$fm->exbb['boardname']}</a> » {$fm->LANG['MailByBoard']}
</div>
<br>
<form method="post" action="tools.php">
<input type="hidden" name="action" value="mail">
<input type="hidden" name="dosend" value="yes">
<input type="hidden" name="admin" value="1">
<input type="hidden" name="member" value="{$user_id}">
<table cellspacing="1" cellpadding="4" border="0" align="center" class="tableborder" width="70%">
<tr>
<td class="maintitle" colspan="2"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt=">" width="8" height="8" /> {$fm->LANG['SendMailTo']} {$user['name']}</td>
</tr>
<tr>
<td class="pformleft" align="right"><b>{$fm->LANG['Topic']}</b></td>
<td class="pformright"><input type="text" name="subject" size="45" maxlength="100" tabindex="2" value="" /></td>
</tr>
<tr>
<td class="pformleft" align="right" valign="top"><b>{$fm->LANG['EmailMessage']}</b></td>
<td class="pformright"><textarea name="message" rows="15" cols="35" wrap="virtual" style="width:450px" tabindex="3"></textarea></td>
</tr>
DATA;
if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0 && isset($fm->input['admin']))
{
echo <<<DATA
<tr>
<td class="pformleft"><b>{$fm->LANG['CaptchaCode']}</b><br /><span class="desc">{$fm->LANG['CaptchaBroken']}</span></td>
<td class="pformright"><img src="regimage.php" border="0" alt="captcha"></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['CaptchaСonfirm']}</b><br /><span class="desc">{$fm->LANG['CaptchaNote']}</span></td>
<td class="pformright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10"></td>
</tr>
DATA;
}
echo <<<DATA
<tr>
<td class="darkrow2" align="center" colspan="2"><input type="submit" value="{$fm->LANG['Send']}" name="submit" /></td>
</tr>
</table>
</form>
DATA;
?>
Также приведу полностью код функции отправки сообщений из tools.php:
CODE:function mailtouser() {
global $fm;
if ($fm->exbb['emailfunctions'] !== TRUE) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['MailFunctionClosed']);
}
if ($fm->user['id'] === 0 && !isset($fm->input['admin'])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
$users = $fm->_Read(FM_USERS);
if (($user_id = $fm->_Intval('member')) === 0 || !isset($users[$user_id])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
}
unset($users);
$user = $fm->_Getmember($user_id);
if ($fm->_Boolean($fm->input, 'dosend') === TRUE) {
if (!defined('IS_ADMIN')) {
if (isset($_SESSION['lastposttime']) && ($_SESSION['lastposttime'] + $fm->exbb['flood_limit']) > $fm->_Nowtime) {
$fm->_Message($fm->LANG['MainMsg'],sprintf($fm->LANG['FloodLimitNew'],$fm->exbb['flood_limit']));
}
$_SESSION['lastposttime'] = $fm->_Nowtime;
}
if ($fm->_String('subject') === '' || $fm->_String('message') === '') {
$fm->_Message($fm->LANG['MailByBoard'],$fm->LANG['NoEmptyFields']);
}
$fm->input['subject'] = $fm->bads_filter(substr($fm->input['subject'],0,255));
$fm->input['message'] = $fm->bads_filter($fm->input['message']);
if (isset($fm->input['admin']) && $fm->user['id'] === 0 && $fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha']))
{
$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);
}
unset($_SESSION['captcha']);
$email = sprintf($fm->LANG['EmailByBordText'],
$user['name'],
$fm->user['name'],
$fm->exbb['boardname'],
$fm->exbb['boardurl']).$fm->input['message'];
$fm->_Mail($fm->exbb['boardname'],
(!empty($fm->user['mail']))?$fm->user['mail']:'',$user['mail'],$fm->input['subject'],$email);
$fm->_Message($fm->LANG['MailByBoard'],$fm->LANG['SendMailOk'],'index.php');
} else {
$fm->_Title = ' :: '.$fm->LANG['MailByBoard'];
include('./templates/'.DEF_SKIN.'/all_header.tpl');
include('./templates/'.DEF_SKIN.'/logos.tpl');
include('./templates/'.DEF_SKIN.'/mailform.tpl');
include('./templates/'.DEF_SKIN.'/footer.tpl');
}
}
Parapsixolog пишет:Сейчас я включил, форма появилась (без каптчи)
Интересненько.. У меня каптча появляется и всё работает. Никаких предупреждений нет. Посмотрите-ка есть ли у вас файл regimage.php?
Всё ли вы сделали по инструкции? Ещё раз проверьте все шаги.
Может тот ваш мод вносит какие-то новые зависимости? Попробуйте поставить чистый exbb fm 1.0 rc1 и ввести изменения предложенные мной, должно всё работать. |
Flat |
Отправлено: 22 сентября 2018 — 12:10 • Тема: Размышлизмы о движке • Форум: О жизни |
Ответов: 64 Просмотров: 0
|
Давайте немного поразмышляем..
Пока конкретно о такой вещи, как шаблонизация. Для кого тема скучная, а по мне так наоборот..
Много чего я читал на просторах и-нета про шаблоны и шаблонизацию. говорят, что нужно, просто обязательно отделять форму от содержания для того, чтобы верстальщикам было легче верстать, а пэхэпэтчикам кодить))
Однако посмотрите каким образом всё это реализовано в существующих шаблонизаторах. Взять тот же движок exbb. Посмотрите там: отделена ли там сущность от формы? Да любой шаблонизатор возьмите..
Вот часть кода из одного шаблона exbb:
CODE:<td align="center">{$GLOBALS['fm']->_Counters}<br />
Как хорошо видно переменные php прекрасно уживаются в шаблоне вместе с html тегами. Казалось бы - а куда деваться? Везде так.. Так-то так, да можно и по другому..
Откройте этот шаблон в любом редакторе исходного кода и вы не увидите никакой подсветки html. Можно сказать: ну создай свои темы подсветки для файлов типа .tpl Дык ведь даже это дело не каждому по плечу.
Итак две проблемы налицо:
1) Отсутствует подсветка тэгов в стандартных общедоступных редакторах.
2) Код html по прежнему перемешан с кодом php.
Предлагаю совершенно другой подход. Во-всяком случае я такого на просторах и-нета ещё не встречал. Меня интересует мнение знакомых с данной проблематикой людей, да и просто заинтересованных лиц. Прошу высказать свои мнения и соображения по данному вопросу.
Суть предложения.
В файле с шаблоном не должно быть вообще никаких переменных, условий и вообще НИКАКОГО кода php! Там должен находится только ЧИСТЫЙ html!
Скажете - утопия, как вообще возможно в него что-либо вставлять? Отвечу всё довольно просто реализуется, и мечта о разделении формы и содержания может быть осуществлена хотя бы в новом движке.
Итак, например имеем файл tpl.php с нашим шаблоном. Заметьте расширение - не tpl, а php! Это важный момент! Реализуется он так:
CODE:<?php if (!defined('EXBB_OK')){die('Access denied!');}?>
<table width="100%" id="logostrip" cellspacing="0" cellpadding="0"><tr><td><a href="index.php" title="
"><img src="./templates/
/im/logo.gif" alt="
" width="207" height="52" border="0" /></a></td><td valign="bottom" align="right"><a href="index.php" style="margin-right:20px;color:#ffffff">
</a></td></tr></table>
Это из шаблона этого движка, но реализованного по своему.
Каждая часть на своей строке. В редакторах подобный html отлично подсвечивается. Никакого php и в помине..
Теперь как происходит вставка. Имеем например функцию:
CODE:<?php if (!defined('EXBB_OK')){die('Access denied!');}
function exbb_showLogoStrip()
{
global $Config, $ContentBuf, $TemplatesPath;
require_once($TemplatesPath.'tpl.php');
$tpl=exbb_getArr($TemplatesPath.'tpl.php');
$ContentBuf.=$tpl[0].$Config[1].$tpl[1].$Config[4].$tpl[2].$Config[1].$tpl[3].$Config[1].$tpl[4];
}
?>
Как видим и здесь только PHP и никакого html. Итак код и данные полностью разделены!
Что это еще даёт?
А это даёт то, что теперь сторонний код может с лёгкостью ИЗМЕНЯТЬ шаблоны! Иногда прямо "на лету". Ещё этот способ в разы быстрее, чем в существующих шаблонизаторах..
Когда эта идея впервые пришла мне в голову, то я сразу понял: так оно и должно быть! И никак иначе.. А вы как думаете? |
Flat |
Отправлено: 22 сентября 2018 — 09:44 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:А для гостей страница отправки e-mail вообще не открывается, пишет:
Насчёт этого: у меня такого не вылазило. Если что проверьте включена ли эта функция в админке. Странно почему не склеились эти мои 2 сообщения? |
Flat |
Отправлено: 22 сентября 2018 — 09:33 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog , - это моя недоработка - не протестил отправку письма, делал в попыхах. Посмотрел что форма работает и всё. Теперь всё решил.
1) Обязательно закинте, если не закинули ещё, строчки в LANG файл о чём я писал выше.
2) В папке templates/ваш_скин открываем файл mailform.tpl. Меняем всё что там находится на мой вариант, который я приводил выше. Затем, уже в изменённом файле ищем строку:
CODE:<input type="hidden" name="dosend" value="yes">
и после неё вставляем:
CODE:<input type="hidden" name="admin" value="1">
Затем находим строку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0)
и меняем её на строку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0 && isset($fm->input['admin']))
С этим файлом закончили.
3) Открываем первоначальный(не изменённый как выше) tools.php, и производим следующие изменения.
Находим строку:
CODE:if ($fm->user['id'] === 0) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
и меняем её на:
CODE:if ($fm->user['id'] === 0 && !isset($fm->input['admin'])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
Находим строку:
CODE:$fm->input['subject'] = $fm->bads_filter(substr($fm->input['subject'],0,255));
$fm->input['message'] = $fm->bads_filter($fm->input['message']);
и после неё вставляем:
CODE:if (isset($fm->input['admin']) && $fm->user['id'] === 0 && $fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha']))
{
$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);
}
unset($_SESSION['captcha']);
это несколько изменённый предыдущий вариант.
Затем находим строку:
CODE:$fm->_Mail($fm->exbb['boardname'],$fm->user['mail'],$user['mail'],$fm->input['subject'],$email);
и меняем её на:
CODE:$fm->_Mail($fm->exbb['boardname'],
(!empty($fm->user['mail']))?$fm->user['mail']:'',$user['mail'],$fm->input['subject'],$email);
Вроде бы и всё. Я всё протестировал - письма отправляются. Никаких ошибок не появляется. Каптча для гостей выводится и проверяется(с фиксированной кнопки). Если ещё какой-либо косяк выявится, то пишите. Но вроде бы всё работает как часики. Может даже и у себя это оставлю)) |
Flat |
Отправлено: 21 сентября 2018 — 08:32 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:Только затем, что бы вывести форму написания письма администратору в отдельное окно, и оставить формы e-mail на самом форуме неизменными.
Всё оказалось намного проще чем я думал.
Инструкция:
1) Открываем в папке include файл page_tail.php. Перед тегом </body> вставляем строчки:
CODE: <div style="opacity: 0.7; margin: 0px; background: e6eeee; z-index: 2; position: fixed; height: 100%; right: 90%; top: 95%;"> <a href="tools.php?action=mail&member=1&admin=1">
<img src="./templates/InvisionExBB/im/email.gif"
border=0 alt="Написать администратору" title="Написать администратору" /></a>
</div>
В ссылке на картинку добавьте свою папку со скином. А также сделайте свою картинку кнопки. Я взял кнопку стандартную чтобы было видно что скрипт работает.
2) Берём вышепреведённый несколькими постами выше мой вариант файла mailform.tpl. Находим в нём строчку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0)
и меняем её на строку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0 && $fm->input['admin']===1)
3) Файл tools.php переделываем как я уже писал выше.
Всё.
Теперь гости могут отправлять только с фиксированной кнопки и только администратору.
Протестите у себя(у меня всё работает) и если что пишите. |
Flat |
Отправлено: 20 сентября 2018 — 09:27 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Parapsixolog пишет:я хотел, что бы слева, в нижнем углу, была небольшая, полупрозрачная кнопка "Написать нам".
В этом проблемы не вижу.
Всё понятно.
Parapsixolog пишет:То есть, как я понимаю, надо сделать копию файла tools.php, переименовать его, внести ваши правки, удалить всё не нужное, что не нужно для отправки письма.
Зачем такие сложности? Хотя в принципе можно и так, но там надо будет подключить отдельный темплэйт под другим именем(тот, что я выше привёл). Можно через сессию попробовать. Покумекаю, отпишусь.
Parapsixolog пишет:Да, и ещё одно. Лучше было бы не вносить правку в tools.php, а взять готовый скрипт обратной связи работающий по SMTP Только внести в этот скрипт каптчу работающею только для гостей.
Так этот скрипт надо ещё написать или найти готовый. Я в и-нете видел варианты. Пока надо через стандартный сделать, а уж потом можно заменить на любой скрипт. |
Flat |
Отправлено: 19 сентября 2018 — 08:16 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Ещё момент забыл. Вы хотели, чтобы письмо отправлялось только администратору через другую кнопку? Я сделал что письмо отправляется с той кнопки, которая уже присутствует под каждым постом, так что письмо отправляется конкретному юзеру под чьим постом находится кнопка отправки. Однако исправить этот момент легко. Если не получится, то пишите сюда, исправим. Основное сделано, там уже лёгкие моменты остались, на вроде добавления новой кнопки, которая ведёт на данную страничку отправки.. |
Flat |
Отправлено: 18 сентября 2018 — 17:14 • Тема: Отправить письмо администратору сайта • Форум: Обсуждение |
Ответов: 61 Просмотров: 0
|
Посмотрел я код и сделал, то что вы хотели. Открыл для себя много нового, так что время зря не потратил. Последовательность действий следующая:
1) В папке languages/russian открываем файл lang_front_tools.php. Перед строчкой ?> вставляем:
CODE:$this->LANG['CaptchaError'] = 'Не введен или введен неверный защитный код!';
$this->LANG['CaptchaCodeForm'] = 'Защитный код формы';
$this->LANG['CaptchaCode'] = 'Защитный код регистрации';
$this->LANG['CaptchaBroken'] = 'Если Вы не видете код на картинке, то перегрузите окно браузера (Ctrl+R)';
$this->LANG['CaptchaСonfirm'] = 'Подтвердите защитный код';
$this->LANG['CaptchaNote'] = 'Введите код показанный на картинке справа.';
Предварительно выставите правильную кодировку в своём редакторе.
2) В папке templates/ваш_скин открываем файл mailform.tpl. Меняем всё что там находится на это:
CODE:<?php
echo <<<DATA
<br>
<div id="navstrip" align="left">
<img src="./templates/InvisionExBB/im/nav.gif" border="0" alt=">" /> <a href="index.php">{$fm->exbb['boardname']}</a> » {$fm->LANG['MailByBoard']}
</div>
<br>
<form method="post" action="tools.php">
<input type="hidden" name="action" value="mail">
<input type="hidden" name="dosend" value="yes">
<input type="hidden" name="member" value="{$user_id}">
<table cellspacing="1" cellpadding="4" border="0" align="center" class="tableborder" width="70%">
<tr>
<td class="maintitle" colspan="2"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt=">" width="8" height="8" /> {$fm->LANG['SendMailTo']} {$user['name']}</td>
</tr>
<tr>
<td class="pformleft" align="right"><b>{$fm->LANG['Topic']}</b></td>
<td class="pformright"><input type="text" name="subject" size="45" maxlength="100" tabindex="2" value="" /></td>
</tr>
<tr>
<td class="pformleft" align="right" valign="top"><b>{$fm->LANG['EmailMessage']}</b></td>
<td class="pformright"><textarea name="message" rows="15" cols="35" wrap="virtual" style="width:450px" tabindex="3"></textarea></td>
</tr>
DATA;
if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0)
{
echo <<<DATA
<tr>
<td class="pformleft"><b>{$fm->LANG['CaptchaCode']}</b><br /><span class="desc">{$fm->LANG['CaptchaBroken']}</span></td>
<td class="pformright"><img src="regimage.php" border="0" alt="captcha"></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['CaptchaСonfirm']}</b><br /><span class="desc">{$fm->LANG['CaptchaNote']}</span></td>
<td class="pformright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10"></td>
</tr>
DATA;
}
echo <<<DATA
<tr>
<td class="darkrow2" align="center" colspan="2"><input type="submit" value="{$fm->LANG['Send']}" name="submit" /></td>
</tr>
</table>
</form>
DATA;
?>
После вставки обратите внимание на расположение завершителя DATA; Он должен находится в первом столбце(в начале строки без отступов) иначе работать не будет. Если необходимо подкорректируйте этот момент.
3) открываем файл tools.php. Находим функцию mailtouser(). Находим строку:
CODE:if ($fm->user['id'] === 0) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
и закомментируем её:
CODE:/*if ($fm->user['id'] === 0) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}*/
Находим строку:
CODE:$fm->input['subject'] = $fm->bads_filter(substr($fm->input['subject'],0,255));
$fm->input['message'] = $fm->bads_filter($fm->input['message']);
и после неё вставляем код:
CODE:if ($fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha']))
{
$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);
}
unset($_SESSION['captcha']);
Если всё сделали правильно, то всё будет работать. Я протестил у себя - всё работает. Зарегестрированные пользователи без капчи, гости с каптчей. Каптча проверяется.
---------------
Вообще есть над чем поразмыслить, не правда ли?. На других форумах такой бодяги нет.. Там закинул плагин в папку сплагинами и подключил через админцентр, а здесь вот так приходится ручками, ручками править.. Если по уму, то я бы написал плагин, положил бы его в архив и отправил пользователю. Пользователю достаточно было бы его распаковать в папку с плагинами и запустить через админпанель. Плагин бы сам всё прописал где нужно. А зачем же тогда компы придумали? Правильно: для автоматизации рутинных операций.. Не надоело ещё?.. Мне лично надоело. |
|
Страниц (13): В начало « ... 5 6 7 8 [9] 10 11 12 13 »
|