X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Вопросы по переделке модуля
DARK_Vovich
сообщение 2011-03-03, 17:29
Сообщение #1
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Я занялся созданием модуля каталога на основе модуля Новостей и возникли некоторые вопросы.

  1. Инпуты, селекты и пр.
    • Есть ли какие-то настройки у стандартных полей
      Template::Edit('tags',$tags)
      помимо типа (Edit, Select, Item)? Мне нужна возможность изменять размер и добавлять JS события.
    • Я добавил свои инпуты в форму добавления контента, вида:
      <input class="inputText" name="address" id="address" size="50" ENGINE="text" value="" onblur="if (this.value.length>0) {codeAddress(this.value);}" />
      , но данные из них не сохраняются в базу! При использовании стандартных Template::Edit - работает! Как это исправить?
  2. Как можно отключить функцию создания url (вручную и по заголовку) и сделать её вида myname_id.html ?


Сообщение отредактировал DARK_Vovich - 2011-03-03, 17:31
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-03, 17:45
Сообщение #2
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DARK_Vovich @ 2024-04-16 08:29)
Есть ли какие-то настройки у стандартных полей

Посмотрите, как устроен это метод. Третьим и четвертым параметром как раз и передаются настройки.

Цитата (DARK_Vovich @ 2024-04-16 08:29)
, но данные из них не сохраняются в базу! При использовании стандартных Template::Edit - работает! Как это исправить?

А Вы точно записываете их в базу?

Цитата (DARK_Vovich @ 2024-04-16 08:29)
Как можно отключить функцию создания url (вручную и по заголовку) и сделать её вида myname_id.html ?

Непонял
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-03, 20:04
Сообщение #3
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Так, с 1 и 2 вопросом разобрался! Система действительно позволяет свои инпуты делать, очень удобно) Спасибо!

С 3 пунктом - я полностью удалил поля url и main_cat в таблице и хочу, чтобы URL к элементам каталога был одинаковый вида /modulename/point_$id.html (собственно, как стандартный nid выводится). Вообщем я прошелся по коду, поудалял лишнее и все вроде бы работает, как я хотел)

Но остались конструкции такие:
$url=$Mainclass->Url->ConstructUrl(array(array($arr['url'],'point'=>$arr['id'])));


Как из них безболезненно убрать $arr['url'] (а то крэшится в логи)?
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-03, 21:16
Сообщение #4
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


4. Я отказался от использования основной категории, сделал основным поле cats (отображать в категориях), т.е. возможность указывать несколько категорий основными. Но в шаблон они чего-то не хотят выводится:
$category=$Mainclass->lang['recyclepoints']['category'].(($c=$Mainclass->Categories_l->GetDump($arr['cats'])) ? implode(",",'<a href="'.$Mainclass->Categories_l->CategoryUrl($arr['cats']).'" title="'.strip_tags($c['description']).'">'.$c['title'].'</a>') : '<i>'.$Mainclass->lang['main']['no'].'</i>');

всегда возвращает нет категории.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-04, 15:55
Сообщение #5
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DARK_Vovich @ 2024-04-16 08:29)
всегда возвращает нет категории.

Потому что поле cats - это категории через запятую (причем, начинается это поле запятой), а метод GetDump принимает на вход ТОЛЬКО целое число.
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-04, 19:35
Сообщение #6
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2011-03-04, 16:55)
Потому что поле cats - это категории через запятую (причем, начинается это поле запятой), а метод GetDump принимает на вход ТОЛЬКО целое число.

А подскажи тогда, какой есть способ их выдернуть? (запятые до и после я убрал)
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-04, 21:24
Сообщение #7
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DARK_Vovich @ 2024-04-16 08:29)
А подскажи тогда, какой есть способ их выдернуть? (запятые до и после я убрал)

Я виже смысл в выдергивании только одной (основной категории). Или хочется выдернуть вообще все?
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-05, 0:19
Сообщение #8
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2011-03-04, 22:24)
Я виже смысл в выдергивании только одной (основной категории). Или хочется выдернуть вообще все?

Да, нужно все выдернуть. У меня по задумке их будет не более 5-7.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-05, 0:45
Сообщение #9
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


DARK_Vovich, в таком случае берете массив $Mainclass->categories->dump. Это ассоциативный массив, где ключами являются ИДы категорий. Пробегаетесь по нему и вытаскиваете нужные вам значения.
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-08, 20:16
Сообщение #10
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2011-03-05, 1:45)
DARK_Vovich, в таком случае берете массив $Mainclass->categories->dump. Это ассоциативный массив, где ключами являются ИДы категорий. Пробегаетесь по нему и вытаскиваете нужные вам значения.


Александр, а можно поподробнее?

Я в начале модуля определил
$Mainclass->LoadClass('classes/others/class_categories.php');
$Mainclass->Categories->url_ending=$Mainclass->vars['m_recyclepoints_category_ending'];
$Mainclass->Categories->Init();


и затем вывожу так
$category=(($c=$Mainclass->Categories->dump($arr['cats'])) ? implode(",",'<a href="'.$Mainclass->Categories->CategoryUrl($arr['cats']).'" title="'.strip_tags($c['description']).'">'.$c['title'].'</a>') : '<i>'.$Mainclass->lang['main']['no'].'</i>');

пусто(

Даже если просто без подключений через
$category=$Mainclass->categories->dump($arr['cats']);

тоже пусто.

Сообщение отредактировал DARK_Vovich - 2011-03-08, 20:17
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-10, 2:29
Сообщение #11
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Помогите пожалуйста с категориями, очень важно!

Еще 2 вопроса:
5. Мне нужно организовать вывод категорий на форме добавления в виде множества чекбоксов. Скажите, как это можно сделать?
Я ковырялся в файле classes/class_template.php и даже почти переделал вывод наподобии вывода множества радиокнопок, но так и не понял откуда выводится каждое значение в виде <option value="id">jjj</option> - в этом файле даже нет упоминания такой структуры.

6. В админке сортировка записей по категориям происходит только по первой категории (т.е. если она указана первой - то сортируется, 2 и далее - нет). Как сделать сортировку, если хотя бы где-то встречается данная категория? (см скрин)
Код отвечающий за фильтр.
$ficat=0;
	$fititle='';
	if(!empty($_REQUEST['filter']))
	{
		$pages_arr['filter']=1;
		if(!empty($_REQUEST['ficat']))
		{
			$pages_arr['ficat']=$ficat=$_REQUEST['ficat'];
			$where.=' AND `cats`='.(int)$ficat;
		}
		if(!empty($_REQUEST['fititle']))
		{
			$pages_arr['fititle']=$fititle=$_REQUEST['fititle'];
			$where.=' AND `title` LIKE \'%'.$Mainclass->Db->EscapeString($fititle).'%\'';
		}
	}
	if(count($pages_arr)<=1)
		unset($pages_arr['filter']);

7. Что делает выбор статуса обратить активность? (см. скрин)
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-10, 3:47
Сообщение #12
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DARK_Vovich @ 2024-04-16 08:29)
Даже если просто без подключений через...оже пусто.

Еще раз повтоярю, что $Mainclass->Categories->dump это АССОЦИАТИВНЫЙ массив, ключами которого являются ID категорий. Вы же наспильно пытаетесь оттуда извлечь значение, которое IDом категории НЕ ЯВЛЯЕТСЯ. Посмотрите хотя лог ошибок кода системы. Многое прояснится.

Цитата (DARK_Vovich @ 2024-04-16 08:29)
выводится каждое значение в виде <option value="id">jjj</option> - в этом файле даже нет упоминания такой структуры.

Все делается в методе GetCatOptions с вызозовом Template::Option.

Цитата (DARK_Vovich @ 2024-04-16 08:29)
Как сделать сортировку, если хотя бы где-то встречается данная категория?


WHERE `cats` LIKE '%,ID,%'


Цитата (DARK_Vovich @ 2024-04-16 08:29)
7. Что делает выбор статуса обратить активность?

Если категория не была активирована, она активируется. И наоброт: если была активирована - деактивируется. В 99.9% - бесполезная функция. Но может кому-то и пригодится.
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-23, 16:31
Сообщение #13
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Спасибо!

4. С дампом так и не разобрался, поэтому скопировал функцию вывода категорий как в админке, все работает.

5. Я сделал вывод выбора категорий через чекбоксы, но не могу понять, как сделать, чтобы они сохранялись в бд?
Оригинал выводился так:
<select name="cats[]" size="10" multiple="multiple" class="select"><option value="3">›&nbsp;Блог</option><option value="2">›&nbsp;События</option></select>

я сделал так:
<input type="checkbox" name="cats" value="1" /> Категория1  <input type="checkbox" name="cats" value="2" /> Категория2  <input type="checkbox" name="cats" value="3" /> Категория3

Но не сохраняется (с cats[] тоже самое)

и новый вопрос:
7. Мне в админке нужно новая страница. Написал соответствующую функцию, включил её в меню, все работает, но эта страница не схватывается шаблонизатором! Т.е. при переходе на неё весь html код исчезает и выводится белая страница только с кодом функции который присвоен $content="". В чем может быть проблема? Вроде бы прописал перехват адреса.

Сообщение отредактировал DARK_Vovich - 2011-03-23, 16:31
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-24, 18:17
Сообщение #14
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DARK_Vovich @ 2024-04-16 08:29)
Но не сохраняется (с cats[] тоже самое)

А как Вы сохраняете?

Цитата (DARK_Vovich @ 2024-04-16 08:29)
аписал соответствующую функцию, включил её в меню, все работает, но эта страница не схватывается шаблонизатором!

Это как?
Перейти в начало страницы
+Цитировать сообщение
DARK_Vovich
сообщение 2011-03-29, 23:29
Сообщение #15
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 119
Регистрация: 2010-04-23
Версия системы: RC5

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2011-03-24, 19:17)
Это как?


Вот смотрите, написал функцию сохранения данных в файл и вставил это в admin/index.php:
function MakeMapFile($error='') 
{global $Mainclass,$title;
	$title=$Mainclass->lang['actionsmap']['makemap'];
	$addon_fields='';
	$AddonFields=$Mainclass->LoadClass('classes/others/class_addon_fields.php');
	$content=$Mainclass->Template->Title($title)
	.$Mainclass->Template->OpenTable();
	$result=$Mainclass->Db->Query('SELECT `id`,`title`,`text`,`af`,`address`,`lat`,`lng` FROM `f_mytable` INNER JOIN `f_mytable_l` USING(`id`) WHERE `language`IN(\'\',\''.$Mainclass->lang_name.'\') AND `status`=1 AND `main_cat`=1',__file__,__line__);
	$kml=array('<?xml version="1.0" encoding="UTF-8"?>');
	$kml[]='<kml xmlns="http://www.opengis.net/kml/2.2">';
	$kml[]=' <Document>';
	$kml[]='  <Style id="readyStyle">';
	$kml[]='   <IconStyle id="readyIcon">';
	$kml[]='   <Icon>';
	$kml[]='    <href>http://code.google.com/intl/ru-RU/apis/maps/documentation/javascript/examples/images/beachflag.png</href>';
	$kml[]='   </Icon>';
	$kml[]='   </IconStyle>';
	$kml[]='  </Style>';
	while($arr=$Mainclass->Db->Fetch_assoc($result)) {
		$af=$AddonFields->OutPut($arr['af']);
		if($af)
		{
			foreach($af as &$v)
				if($v['value']!='')
					$addon_fields=$v['title'].': '.$v['descr'];
		}
		unset($arr['af']);
		$kml[]='	<Placemark id="placemark'.$arr['id'].'">';
		$kml[]='		<name>'.ConvertToUTF($arr['title']).'</name>';
		$kml[]='		<description>';
		$kml[]='			<br />'.ConvertToUTF('<b>Место:</b> '.$arr['address']).'';
		$kml[]='			<br /><b>'.ConvertToUTF($af['datetime']['title']).':</b> '.ConvertToUTF($af['datetime']['value']).'';
		$kml[]='			<br /><b>'.ConvertToUTF($af['organizator']['title']).':</b> '.ConvertToUTF($af['organizator']['value']).'';
		$kml[]='			<br /><b>'.ConvertToUTF('Подробности:</b> '.$arr['text']).'';
		if($af['vkevent']['value']){
			$kml[]='			<br />'.ConvertToUTF('<b>Встреча ВКонтакте:</b>').' <a href="'.$af['vkevent']['value'].'" target="_blank">'.$af['vkevent']['value'].'</a><br />';
		}
		$kml[]='		</description>';
		$kml[]='   		<styleUrl>#readyStyle</styleUrl>';
		$kml[]='   		<Point>';
		$kml[]='    		<coordinates>'.$arr['lng'].','.$arr['lat'].'</coordinates>';
		$kml[]='   		</Point>';
		$kml[]='  	</Placemark>';
		$kml[]=$arr['af'];
	}
	$kml[]=' </Document>';
	$kml[]='</kml>';
	$file_gb="maps/ready.kml"; // файл
	$file_tmp="maps/markers_tmp.kml"; // временный файл
	$mydata=join("\n", $kml);; // данные
	// проверяем, не было ли сбоя в предыдущем запуске скрипта
	if(file_exists($file_tmp)) die("fatal error, call administrator!");
	// копируем содержимое файла в tmp
	if(copy($file_gb, $file_tmp))
	{
		// удачно скопировался, можно перезаписывать основной файл
		if($w=fopen($file_gb,"w+"))
		{
		flock($w,2); // блокируем файл
		fwrite($w,$mydata."\n"); // записываем первую строку
		if(!$r=fopen($file_tmp,"w+")) die("can't open file");
		flock($r,1);
		while($mydata=fgets($r,10240)) // читаем построчно
		{
			fputs($w,$mydata); // пишем построчно
		}
		flock($r,3);
		fclose($r);
		flock($w,3);
		fclose($w);
		unlink($file_tmp);
		$content.=$Mainclass->Template->OpenTable()
		.'Все ок';
		}	
	} 
	else {
		$content.=$Mainclass->Template->Message($Mainclass->lang['actionsmap']['no_way']);
	}
	$content.=$Mainclass->Template->CloseTable();
	echo $content;
}

Соответственно сверху в файле подключил в меню
array($Mainclass->Url->ConstructUrl(array('do'=>'makemapfile')),((isset($_GET['do']) and $_GET['do']=='makemapfile' and !isset($_GET['event'])) ? '!' : '').$Mainclass->lang['actionsmap']['makemap']),

и
elseif(isset($_GET['makemapfile']))
	MakeMapFile((int)$_GET['makemapfile']);


Так вот, при выполнении кода в контент выводится только белый лист с "Все ок", без оформления админки. Может я что-то упустил? :dntknw:
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-03-30, 3:16
Сообщение #16
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


По-моиму Вы упустили $Mainclass->ShowDecoration() ...
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0416 сек.    11 запросов    GZIP включен    Сейчас: 2024-04-16, 8:29