Михаил
+28
Репутация
90
Рейтинг
Мой вам совет, посмотрите в сторону ckeditor 4ой ветки, обладает более дружелюбным интерфейсом и более функционален, абсолютно бесплатен.
Ладно, сделал для себя как хотел, удаляюсь из темы.
Вот пример:
Такие плагины есть на многих цмс, и используется именно такая модель разбивки, чаще всего через какой-то символ, да и на скорость работы это сильно не влияет.
К примеру, под такую:
слово1|ссылка1
слово2|ссылка2
Пример разбора:
<?php $string = "слово1|ссылка1 слово2|ссылка2"; // получаем массив с каждой строкой в новом индексе // $toArray[индекс] = 'номер_строки'; $toArray = explode("\n", $string); // крутим в цикл for($i=0;$i<=sizeof($toArray);$i++) { // режим еще раз, на "ключ=>слово" list($key,$value) = explode("|", $toArray[$i]); // ну вот и наши ключь + ссылка, делаем что хотим, я эчну (: echo "Слово: ".$key." ссылка: ".$value; // а в вашем случае где то так: // str_replace($key, "<a href='$value' title='$value'>$key</a>", $строка); } ?>в фронт компонента(фи-я с модуля без echo)
function showmapOnSmall($user_id) { $inCore = cmsCore::getInstance(); $inUser = cmsUser::getInstance(); $cfg = $inCore->loadComponentConfig('usermaps'); $result = ""; $result .= ' <script src="http://api-maps.yandex.ru/1.1/index.xml?key='.$cfg['yandex_key'].'" type="text/javascript"></script>'; if($inUser->id != 0) { $sql = mysql_query("SELECT * FROM cms_places WHERE `user_id` = '".$inUser->id."' AND `type_id` = '1'"); $data_point = mysql_fetch_assoc($sql); if(mysql_num_rows($sql) == 0) { $center = $cfg['maps_center']; $zoom = "12"; } else { $center = $data_point['x'].', '.$data_point['y']; $zoom = "13"; } } else { $center = $cfg['maps_center']; $zoom = "12"; } $result .= '<script type="text/javascript"> window.onload = function () { var map = new YMaps.Map(document.getElementById("YMapsID")); map.setCenter(new YMaps.GeoPoint('.$center.'), '.$zoom.'); var zoomControl = new YMaps.Zoom({noTips: true}); map.addControl(zoomControl); map.addControl(new YMaps.TypeControl()); map.setType(YMaps.MapType.'.$cfg['maps_engine'].'); '; /*Cтили меток*/ $result .= 'var userStyle = new YMaps.Style(); userStyle.iconStyle = new YMaps.IconStyle(); userStyle.iconStyle.offset = new YMaps.Point(0, -40); userStyle.iconStyle.size = new YMaps.Point(40, 40); userStyle.iconStyle = new YMaps.IconStyle(); userStyle.iconStyle.href = "/components/usermaps/img/marker_me.png"; '; $result .= 'var baseStyle = new YMaps.Style(); baseStyle.iconStyle = new YMaps.IconStyle(); baseStyle.iconStyle.offset = new YMaps.Point(0, -20); baseStyle.iconStyle.size = new YMaps.Point(20, 20); '; $sql_cat = mysql_query("SELECT * FROM cms_places_category WHERE is_root = '0'"); while ($data = mysql_fetch_assoc($sql_cat)) { $pic = "/components/usermaps/img/".$data["name"].".png"; $result .= 'var style_'.$data["id"].' = new YMaps.Style(baseStyle); style_'.$data["id"].'.iconStyle = new YMaps.IconStyle(); style_'.$data["id"].'.iconStyle.href = "'.$pic.'"; '; } /************************/ $sql = mysql_query("SELECT * FROM cms_places ORDER BY `id` DESC"); while($place = mysql_fetch_assoc($sql)) { if($place["type_id"] == "1") { if($_SESSION["user"]["id"] == $place["user_id"]) { $result .= 'var placemark_'.$place["id"].' = new YMaps.Placemark(new YMaps.GeoPoint('.$place["x"].','.$place["y"].'), {style: userStyle});'; $place_user_id = $place["id"]; } else { $result .= 'var placemark_'.$place["id"].' = new YMaps.Placemark(new YMaps.GeoPoint('.$place["x"].','.$place["y"].'), {style: style_'.$place["type_id"].'});'; } if($_SESSION["user"]["id"] != 0) { $user = mysql_fetch_assoc(mysql_query("SELECT * FROM cms_users WHERE `id` = '".$place["user_id"]."'")); $image = mysql_result(mysql_query("SELECT imageurl FROM cms_user_profiles WHERE `user_id` = '".$place["user_id"]."'"),0); if($image == "") { $image = "nopic.jpg"; } $result .= ' placemark_'.$place["id"].'.name = "'.$user['nickname'].'";'."\n"; $result .= ' placemark_'.$place["id"].'.setBalloonContent("<a href=\"/users/'.$user['login'].'\"><img src=\"/images/users/avatars/small/'.$image.'\"></a>");'."\n"; } } else { $result .= 'var placemark_'.$place["id"].' = new YMaps.Placemark(new YMaps.GeoPoint('.$place["x"].','.$place["y"].'), {style: style_'.$place["type_id"].',});'."\n"; $result .= 'placemark_'.$place["id"].'.setBalloonContent("<a href=\"/usermaps/view'.$place['id'].'.html\">'.str_replace('"','\"',$place["title"]).'</a>");'."\n"; } $result .= 'map.addOverlay(placemark_'.$place["id"].');'."\n"; } $result .= '}'."\n"; $result .= '</script> <div id="YMapsID" style="width:100%;height:600px;margin-bottom: 10px;"></div>'; if ($_SESSION["user"]["id"] != "") { if($place_user_id == "") { $result .= '<a href="/usermaps/add.html">Добавь себя</a>'; } else { $result .= '<a href="/usermaps/edit'.$place_user_id.'.html">Изменить местоположение</a>'; } $result .= ' | <a href="/usermaps/poi_add.html">Добавить Организацию</a>'; } else { $result .= '<a href="/registration">Добавить себя</a>'; } $last = mysql_fetch_assoc(mysql_query("SELECT * FROM cms_places WHERE type_id <> 1 ORDER BY id DESC LIMIT 1")); $last_cat = mysql_fetch_assoc(mysql_query("SELECT * FROM cms_places_category WHERE id = ".$last['type_id']." ORDER BY id DESC LIMIT 1")); $result .= ' | Всего точек : '.mysql_num_rows($sql).' | Новая точка: <img src="/components/usermaps/img/'.$last_cat["name"].'.png" style="margin-bottom: -5px"> <a href ="/usermaps/view'.$last['id'].'.html"> '.$last_cat['title'].' "'.$last['title'].'"</a>'; return $result; }if($do == "poi_list") { $inPage->setTitle("Последние добавленные точки интересов"); $poi = $model->getAllPoi(NULL); print_r($messages); $smarty = $inCore->initSmarty('components', 'com_places_add.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('poi', $poi); $smarty->display('com_places_view_poi.tpl'); return; }if($do == "poi_list") { $inPage->setTitle("Последние добавленные точки интересов"); $poi = $model->getAllPoi(NULL); print_r($messages); $smarty = $inCore->initSmarty('components', 'com_places_add.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('smallmap', showmapOnSmall($inUser->id)); $smarty->assign('poi', $poi); $smarty->display('com_places_view_poi.tpl'); return; }Так было, есть и будет всегда, увы. Если вы этого не знали - ну что ж, теперь знаете )
Почитайте перед тем как что то говорить (
Ладно, придумал иную реализацию (сделал твинк-компонент пустой с опцтимизацией под поисковые запросы, в нем вывел карту с метками). :D
Т.е. сейчас есть модуль который это делает, но беда в том, что если вывод сделать на главной компонента он будет выводится и внутри страничек(добавление точек и т д) чем будет мешать добавлению новых точек (неактивны метки).