VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Добавил поле alt в таблицу attachment.
И создал модуль в attachment_complete
PHP Code:
/* Таблица MySQL, в которой хранятся данные */
$userstable = "attachment";
$query = "SELECT * FROM $userstable WHERE attachmentid = '1'";
$res = mysql_query($query) or die(mysql_error());
$row=mysql_fetch_array($res);
Подскажите, как сделать, чтобы модуль заменял 'alt_image' в шаблоне на содержимое $row["alt"] (альт к первому вложению).
Или может переменную(массив) можно использовать и вставлять в шаблоне?
@ZTX18
Специалист
Join Date: Mar 2009
Posts: 367
Версия vB: 3.8.x
Reputation:
Professional 458
Репутация в разделе: 311
1
На хуке attachment_complete ничего делать не надо, в шаблоне вместо alt_image надо писать $attachment[alt]
А на хуке postbit_factory примерно такой код:
PHP Code:
global $vbulletin, $postattach, $altquery;
if(is_array($postattach) AND !$altquery){
$db=$vbulletin->db;
foreach($postattach AS $id=>$post){
$idl=implode(' , ',array_keys($post));
$ids.=iif($ids AND $idl,' , ').$idl;
}
if($ids)$alts = $db->query_read("SELECT postid, attachmentid, alt FROM ".TABLE_PREFIX."attachment WHERE attachmentid IN ($ids)");
while($alt=$db->fetch_array($alts)){
$postattach[$alt['postid']][$alt['attachmentid']]['alt']=$alt['alt'];
}
$altquery=1;
}
Мне вот только интересно, как предполагается эти описания в базу добавлять, это уже решено?
/* Таблица MySQL, в которой хранятся данные */
$userstable = "attachment";
/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());
mysql_query("SET NAMES utf8_general_ci");
if ((!empty($_POST['alt_id'])) and (!empty($_POST['alt_text'])))
{
$alt_id=mysql_escape_string(stripslashes(trim($_POST['alt_id'])));
$alt_text=mysql_escape_string(stripslashes(trim($_POST['alt_text'])));
mysql_query("UPDATE $userstable SET alt='$alt_text' WHERE attachmentid = $alt_id");
}
$query = "SELECT * FROM $userstable ORDER BY attachmentid";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Как много нашлось таких */
$number = mysql_num_rows($res);
/* Напечатать всех в красивом виде*/
echo "<BR><BR><CENTER>Всего вложений: $number<BR>";
echo "<table border=1 width=800 cellpadding=0 cellspacing=0><tr><td>thumbmails</td><td>id</td><td>alt</td></tr>";
/* Получать по одной строке из таблицы в массив $row, пока строки не кончатся */
while ($row=mysql_fetch_array($res)) {
echo "<tr><td><a href=http://site.ru/attachment.php?attachmentid=".$row['attachmentid']."><img src=http://site.ru/attachment.php?attachmentid=".$row['attachmentid']." width=30></a></td><td>".$row['attachmentid']."</td><td>".$row['alt']." </td></tr>";
}
echo "</table>";
?>
IvanDraga добавил 02.11.2010 в 06:04
Хм, в одной теме вылезли ошибки:
Code:
Warning: array_keys() [function.array-keys]: The first argument should be an array in [path]/includes/class_postbit.php(94) : eval()'d code on line 5
Warning: implode() [function.implode]: Invalid arguments passed in [path]/includes/class_postbit.php(94) : eval()'d code on line 5
Видимо где-то здесь ошибка появилась:
PHP Code:
$idl=implode(' , ',array_keys($post));
IvanDraga добавил 02.11.2010 в 06:08
Сделал так, но совсем не уверен, что верно. Вроде работает:
PHP Code:
global $vbulletin, $postattach, $altquery;
if(is_array($postattach) AND !$altquery){
$db=$vbulletin->db;
foreach($postattach AS $id=>$post){
if(is_array($post)) {
$idl=implode(' , ',array_keys($post));
$ids.=iif($ids AND $idl,' , ').$idl; }
}
if($ids)$alts = $db->query_read("SELECT postid, attachmentid, alt FROM ".TABLE_PREFIX."attachment WHERE attachmentid IN ($ids)");
while($alt=$db->fetch_array($alts)){
$postattach[$alt['postid']][$alt['attachmentid']]['alt']=$alt['alt'];
}
$altquery=1;
}
Last edited by IvanDraga : 11-02-2010 at 07:08 AM.
Reason: Добавлено сообщение
@ZTX18
Специалист
Join Date: Mar 2009
Posts: 367
Версия vB: 3.8.x
Reputation:
Professional 458
Репутация в разделе: 311
0
Что выводит в этой теме print_r($postattach); при добавлении после global $vbulletin, $postattach, $altquery; ?
Вложений с такими id нет (максимальный id в базе 348).
print_r($post); после foreach($postattach AS $id=>$post){ не выводит ничего.
В самой теме никаких вложений, миниатюр нет.
Last edited by IvanDraga : 11-02-2010 at 03:58 PM.