Fluid Fixed 800x600 Fixed 1024x768
// check that we have access defined( '_VALID_MOS' ) or die( 'Restricted access' ); // register our event. It would be great of joomla had more events $_MAMBOTS->registerFunction( 'onPrepareContent', 'JoomSEO' ); function JoomSEO($published, &$row, &$params, $page=0) { global $database, $mainframe, $mosConfig_MetaKeys, $mosConfig_MetaDesc, $mosConfig_sitename; // perform a published check if (!$published) { return; } // get our bot parameters $query = "SELECT id FROM #__mambots WHERE element = 'JoomSEO' AND folder = 'content'"; $database->setQuery($query); $id = $database->loadResult(); // get our mambot object $mambot = new mosMambot($database); $mambot->load($id); $botParams = new mosParameters($mambot->params); // load all our vars //Title $titleLength = $botParams->get('titleLength', false); $titleOrder = $botParams->get('titleOrder', 1); $prependTitle = $botParams->get('prependTitle', false); $appendTitle = $botParams->get('appendTitle', false); // site name $showTitleSiteName = $botParams->get('showTitleSiteName', true); $overrideSiteName = $botParams->get('overrideSiteName', false); // content / heading title $showContentHeading = $botParams->get('showContentHeading', true); // paragraph $showFirstParagraph = $botParams->get('showFirstParagraph', false); $paragraphMinLength = $botParams->get('paragraphMinLength', 20); $paragraphLength = $botParams->get('paragraphLength', 50); // keywords $showTitleKeywords = $botParams->get('showTitleKeywords', true); $overrideTitleKeywords = $botParams->get('overrideTitleKeywords', false); $keywordMinCharacters = $botParams->get('keywordMinCharacters', 3); $titleKeywordQuantity = $botParams->get('titleKeywordQuantity', 5); // meta $metaKeywordsCount = $botParams->get('metaKeywordsCount', 50); $metaDescriptionMinLength = $botParams->get('metaDescriptionMinLength', 80); $metaDescriptionLength = $botParams->get('metaDescriptionLength', 150); // filter // when bot was first installed these were not being added unless bot was *saved* $defStickWords = ""; $stickyWords = $botParams->get('stickyWords', $defStickWords); $defBadWords = "0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z about an are as at be by com de en for from how in is it its la of on or that the this to was what when where who will with und the www and all has been your us up youll can if youve do know we not many you our but there they then more"; $badWords = $botParams->get('badWords', $defBadWords); $defBadCharacters = "0 1 2 3 4 5 6 7 8 9 > < & - , . ; : ) ( ? ! { } [ ] / ' " %"; $badCharacters = $botParams->get('badCharacters', $defBadCharacters); // bot activation $disableFrontpage = $botParams->get('disableFrontpage', false); // activation specific $disableFrontpageTitle = $botParams->get('disableFrontpageTitle', false); $disableFrontpageKeywords = $botParams->get('disableFrontpageKeywords', false); $disableFrontpageDescription = $botParams->get('disableFrontpageDescription', false); // front page overrides. Front page or corresponding item must be enabled though $overrideFrontPageTitle = $botParams->get('overrideFrontPageTitle', false); $overrideFrontPageKeywords = $botParams->get('overrideFrontPageKeywords', false); $overrideFrontPageDescription = $botParams->get('overrideFrontPageDescription', false); // SEO / Accessability // defaulted to false to as not to break existing templates $addHeadingTags = $botParams->get('addHeadingTags', false); // current settings $currentTitle = gettitle(); $currentContentHeading = $row->title; $currentMetaKeys = $mosConfig_MetaKeys; $currentMetaDesc = $mosConfig_MetaDesc; // added to limit sql queries $isFrontPage = IsFrontPage(); // firstly add our generator tag. // please leave this here as it will not affect seo // and gives my countless hours of programming an idea of use. global $beenHere; if (!$beenHere) { // add JoomSEO bot to Generator meta ReplaceMeta('Generator', ' JoomSEO by Phill Brown (http://www.joomseo.com).'); } // encompass our headings with hX tags // added first as we want this active even if the front page is disabled if ($addHeadingTags) { $row->title = AddHeadingTags($row->title, $addHeadingTags); } // check if we are enabled on the front page if (($isFrontPage) && ($disableFrontpage)) { // removed after added front page overrides and specific disabled attributes // were added after release 0.9 //if ($disabledFrontPageTitle) { // apply replacement text instead of joomla default // replacetitle($disabledFrontPageTitle); //} // exit from this bot return; } // clean and organise our text $text = PrepareText($row->text); // all CleanChars() no longer used as it was stopping other languages from operating proplerly //$text = CleanChars($text); $stickyWords = PrepareText($stickyWords); //$stickyWords = CleanChars($stickyWords); $badWords = PrepareText($badWords); //$badWords = CleanChars($badWords); $badCharacters = PrepareText($badCharacters); //$badCharacters = CleanChars($badCharacters); // clear existing meta keywords and descriptions $mosConfig_MetaKeys = ""; $mosConfig_MetaDesc = ""; // was thinking of adding later a check to use only first article or all articles // this get the total content from all articles from a com_frontpage global $botSefText; $botSefText .= $text; // get our site name // added to get the site title once global $newSiteName; //$newSiteName = null; if (!$newSiteName) { if ($showTitleSiteName) { $newSiteName = $mosConfig_sitename; if ($overrideSiteName) { $newSiteName = $overrideSiteName; } } } // get our content heading // added this to get first heading global $newContentHeading; //$newContentHeading = null; if (!$newContentHeading) { if ($showContentHeading) { $newContentHeading = $currentContentHeading; } } // get our first paragraph // added to get the paragraph once only global $newFirstParagraph; //$newFirstParagraph = null; if (!$newFirstParagraph) { if ($showFirstParagraph) { $newFirstParagraph = trim(GetDescription($botSefText, $paragraphMinLength, $paragraphLength)); } } // get our title keywords // no global as we need this to parse all keywords $newTitleKeywords = null; if ($showTitleKeywords) { $newTitleKeywords = GlueItems(GetKeywords($botSefText,$keywordMinCharacters,$titleKeywordQuantity,$stickyWords,$badWords,$badCharacters)); if ($overrideTitleKeywords) { $newTitleKeywords = GlueItems(GetKeywords($overrideTitleKeywords)); } } // sort our title $titleArray = array(); Push($titleArray, $prependTitle); switch ($titleOrder) { case 1:// Push($titleArray, $newSiteName); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newTitleKeywords); break; case 2:// Push($titleArray, $newSiteName); Push($titleArray, $newTitleKeywords); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } break; case 3:// if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newSiteName); Push($titleArray, $newTitleKeywords); break; case 4:// if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newTitleKeywords); Push($titleArray, $newSiteName); break; case 5:// Push($titleArray, $newTitleKeywords); Push($titleArray, $newSiteName); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } break; case 6:// Push($titleArray, $newTitleKeywords); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newSiteName); break; } Push($titleArray, $appendTitle); if ($titleLength) { $newTitle = substr(implode(' | ', $titleArray),0,$titleLength); } else { $newTitle = implode(' | ', $titleArray); } // its the front page so do front page specific handling if ($isFrontPage) { // get our frontpage title if ($disableFrontpageTitle) { // use the joomla generated title $newTitle = $currentTitle; } else { $newTitle = ($overrideFrontPageTitle) ? $overrideFrontPageTitle : $newTitle; } // get our frontpage keywords if ($disableFrontpageKeywords) { // use the joomla default $metaKeywords = $currentMetaKeys; } else { $metaKeywords = ($overrideFrontPageKeywords) ? $overrideFrontPageKeywords : GlueItems(GetKeywords($botSefText,$keywordMinCharacters,$metaKeywordsCount,$stickyWords,$badWords,$badCharacters)); } // get our frontpage description if ($disableFrontpageDescription) { // use the joomla default $metaDescription = $currentMetaDesc; } else { $metaDescription = ($overrideFrontPageDescription) ? $overrideFrontPageDescription : GetDescription($botSefText, $metaDescriptionMinLength, $metaDescriptionLength); } } else { // we are on any other page so perform normal operations $metaKeywords = GlueItems(GetKeywords($botSefText,$keywordMinCharacters,$metaKeywordsCount,$stickyWords,$badWords,$badCharacters)); $metaDescription = GetDescription($botSefText, $metaDescriptionMinLength, $metaDescriptionLength); } replacetitle($newTitle); ReplaceMeta('keywords', $metaKeywords); ReplaceMeta('description', $metaDescription); // set our been here status $beenHere = true; } /** * Add an item to our array * * @param array $stack * @param text $var */ function Push(&$stack, $var) { if ($var) { array_push($stack, $var); } } /** * Add H1, H2, H3... tags to text * * @param string $title * @param int $num * @return string */ function AddHeadingTags($title, $num) { return "$title"; } /** * Checks if current page is Joomla front page * * @return unknown */ function IsFrontPage() { global $database; global $Itemid; // if we have no option then we should have arrived at the front page of the site. // sef url mapping bypasses this but is caught below if (mosGetParam($_GET,'option','') == '') { return true; } // get the first menu item in mainmenu as this is the front page in joomla $query = "SELECT * from #__menu WHERE menutype = 'mainmenu' AND published = '1' ORDER BY ordering LIMIT 1"; $database->setQuery($query); $row = null; $database->loadObject($row); if ($Itemid == $row->id) { return true; } return false; } /** * Replaces current Joomla meta tag * code based from joomla.php * * @param string $name * @param string $content */ function ReplaceMeta($name, $content) { global $mainframe; $name = trim(htmlspecialchars($name)); $n = count($mainframe->_head['meta']); for ($i = 0; $i < $n; $i++) { if ($mainframe->_head['meta'][$i][0] == $name) { $content = trim(htmlspecialchars($content)); if ($content) { $mainframe->_head['meta'][$i][1] = $content; } return; } } $mainframe->addMetaTag($name, $content); } /** * Get current meta content * code based from joomla.php * * @param string $name * @return string */ function GetMeta($name) { global $mainframe; $name = trim(htmlspecialchars($name)); $n = count($mainframe->_head['meta']); for ($i = 0; $i < $n; $i++) { if ($mainframe->_head['meta'][$i][0] == $name) { return $mainframe->_head['meta'][$i][1]; } } } /** * Get a string of formatted keywords * * @param array key=>value $items * @return string */ function GlueItems($items) { // as format is in a $key=>$value pair extract the keys $keys = array_keys($items); // glue our array into a single string $ret = implode(', ', $keys); return $ret; } /** * Replace current title * * @param string $content */ function replacetitle($content) { global $mainframe; $mainframe->_head['title'] = $content; } /** * Append to current title * * @param string $content */ function appendtitle($content) { global $mainframe; $mainframe->_head['title'] .= $content; } /** * Get the current title * * @return string */ function gettitle() { global $mainframe; return $mainframe->_head['title']; } /** * Gets the description for the meta description tag * uses the sentence inside $minLength and $maxLength * or sentence... if sentence is bigger than $maxLength * * @param string $text * @param int $minLength * @param int $maxLength * @return string */ function GetDescription($text, $minLength = 100, $maxLength = 250) { if ($minLength > $maxLength) return; if (!$text) return; // previously sentences including 'Joomla 1.0' was stopping at "Joomla 1." therefor the philosophy has changed here. // we want a minumim of $minLength chars and a max of $maxLength chars, stopping at a sentence inbetween. // get pos of '.' $stop = strpos($text,'.'); if (($stop >= $minLength) && ($stop <= $maxLength)) { // display the full sentence as it is $desc = trim(substr($text,0,$stop + 1)); } else { // display the sentence cut short $desc = trim(substr($text, 0, $maxLength -3))."..."; } return ucfirst($desc); } /** * Returns an array of keywords * * @param string $text * @param int $keywordMinCharacters * @param int $top * @param string $stickyWords * @param string $badWords * @param string $badCharacters * @param bool $capitalise * @param char $delim * @return array key=>value */ function GetKeywords($text, $keywordMinCharacters = 1, $top = 0, $stickyWords = null, $badWords = null, $badCharacters = null, $capitalise = true, $delim=" ") { $text = strtolower($text); // remove any email addresses $regex = '/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)(\\.[A-Za-z0-9-]+)*)/iex'; $replacement = ' '; $text = preg_replace($regex, $replacement, $text); // remove and unwanted characters $badCharacters = explode($delim, $badCharacters); foreach ($badCharacters as $badChar) { $text = str_replace ($badChar, null, $text); } // remove any unwanted words $badWords = explode($delim,$badWords); $firstWord = substr($text, 0, (strpos($text, " ")) +1); $lastWord = substr($text , strrpos($text, " ")); foreach ($badWords as $badWord) { // remove all instances at the beginning if (strcasecmp("$badWord ",$firstWord) == 0) { $text = substr($text, strlen($firstWord)); } // remove all instances in the middle $text = Replace(" $badWord ", " ", $text); // remove all instances at the end if (strcasecmp(" $badWord", $lastWord) == 0) { $text = substr($text, 0, strlen($text) - strlen($lastWord)); } } // capitalise our text if ($capitalise == true) { $text = ucwords($text); $stickyWords = ucwords($stickyWords); } $wordCount = array(); // add our stickywords $stickyWords = explode($delim,$stickyWords); foreach ($stickyWords as $stickyWord) { $wordCount[$stickyWord]=1; } // loop through all our words and count instances $words = explode($delim,$text); foreach ($words as $word) { $word = trim($word); // after all checking was still getting null chars from somewhere if (($word != null) && (strlen($word) >= $keywordMinCharacters)) { // check that word already has been added if (array_key_exists($word,$wordCount)) { // it does so add to our count $wordCount[$word] += 1; } else { // it doesnt so put it in once $wordCount[$word] = 1; } } } // sort the new word array @arsort($wordCount); $ret = array(); // return all elements if ($top == 0) { return $wordCount; } // return the top X number of elements if ($top < count($wordCount)) { $ret = array_slice($wordCount, 0, $top); } else { $ret = $wordCount; } //foreach ($wordCount as $key=>$val) { // echo "Key: $key Value: $val
"; //} return $ret; } /** * Clean and prepare text, remove any unwanted tags etc * * @param string $text * @return string */ function PrepareText($text) { // removed as redundant from strip_tags // and was causing parsing problems due to incorrect regex. // regex is fixed for the sake of being fixed. // convert html br to space /*$regex = '/()/i';*/ //$text = preg_replace($regex, " ", $text); // remove links /*$regex = '/()(.*?)(<\/a>)/i';*/ //$text = preg_replace($regex, " $2 ", $text); // convert html entities to chars $text = html_entity_decode($text, ENT_QUOTES); // strip any remaining html tags $text = strip_tags($text); // remove any mambot codes $regex = '(\{.*?\})'; $text = preg_replace($regex, " ", $text); // convert tabs to spaces // added below //$text = str_replace("\t", " ",$text); // convert newlines and tabs to spaces $text = str_replace(array("\r\n", "\r", "\n", "\t"), " ", $text); // remove any extra spaces while (strchr($text," ")) { $text = str_replace(" ", " ",$text); } // general sentence tidyup for ($cnt = 1; $cnt < strlen($text); $cnt++) { // add a space after any full stops or comma's for readability // added as strip_tags was often leaving no spaces if (($text{$cnt} == '.') || ($text{$cnt} == ',')) { if (isset($text{$cnt+1})) { if ($text{$cnt+1} != ' ') { $text = substr_replace($text, ' ', $cnt + 1, 0); } } } } return trim($text); } /** * Removes any non readable characters * * @param string $text * @return string */ function CleanChars($text) { for ($cnt=0; $cnt < strlen($text); $cnt++) { $chr = $text{$cnt}; $ord = ord($chr); if ($ord < 32 or $ord > 126) { $chr = " "; $text{$cnt} = $chr; } } return $text; } /** * Case insensitive replace * * @param string $search * @param string $replace * @param string $subject * @return string */ function Replace($search, $replace, $subject, $word = false) { if ($word) { $regex = "/\b$search\b/i"; } else { $regex = "/$search/i"; } return preg_replace($regex, $replace, $subject); } ?>
Психология отношений Печать E-mail
Автор Administrator   
13.12.2008 г.

Психология отношений

 Любые отношения нужно поддерживать, что, согласитесь, требует некоторых усилий с обеих сторон. Разумеется, разные отношения требуют различной «подпитки», некоторые требуют большего внимания и времени, чем другие. Например, отношения в стадии кризиса требуют особой осторожности и внимания, а также постоянных усилий, направленных на преодоление кризиса и восстановление мира.

Однако если ваши романтические отношения развиваются довольно ровно, без особых перепадов, и вы хотите сохранить этот темп, существует несколько эффективных средств, помогающих сохранить заинтересованность друг в друге даже после нескольких лет совместной жизни.

Прежде чем изучать эти инструкции к действию, просим обратить внимание: хотя эти методы работают безотказно в большинстве случаев, частоту и время их использования следует регулировать. Ни в коем случае не злоупотребляйте ними, иначе подруга заподозрит вас в неискренности (а то и в неверности), а острота ощущений исчезнет от частого повторения. И все же не нужно приступать к их выполнению с энтузиазмом обреченного на смерть - некоторая сноровка, несомненно, в этом деле требуется, и любое ваше предложение романтического толка должно выглядеть естественно. В целом, счастливые, гармоничные отношения сохраняются до тех пор, пока партнеры питают друг к другу уважение и любовь, а любые попытки продлить их насильственным образом заканчиваются неудачей. Итак, несколько советов, как быстро и безболезненно показать любимой свое нежное к ней отношение.

1- Делайте ей искренние комплименты

Что значит «делать искренние комплименты»? Ничего особенного. Просто когда ваша любимая входит в комнату в новом умопомрачительном платье (или без него), и ваше сердце начинает учащенно биться, скажите ей об этом. Скажите, как прекрасно она выглядит, как вы счастливы быть с ней вместе, как вам повезло (если вы так считаете, конечно). Или похвалите любимую за повышение на работе, которое она давно заслужила, за важные достижения в карьере или что-то, чем она по праву может гордиться. Такие комплименты никогда не бывают лишними или слишком надуманными, а женщины их ценят больше стандартных дифирамбов красоте. Озвученные вами словесные доказательства ума, красоты и исключительности расслабляют женщину, настраивают ее на романтический лад, и вам не придется долго убеждать ее в своих чувствах. Кроме того, ваше отношение, выраженное в комплиментах, придаст женщине уверенности в себе, а поскольку именно вы улучшили ей настроение, благодарность со стороны любимой не заставит себя ждать.

2- Выполните одну из ее самых настойчивых просьб

Вспомните, о чем любимая уже долго и безуспешно просит вас - например, более тщательно бриться или пригласить ее в ресторан - а вы все делаете вид, что не слышите? Что ж, если вы немного напряжетесь и выполните ее просьбу (а еще лучше, если вы будете выполнять ее просьбу постоянно), любимая непременно заметит и оценит ваше внимание. Такие добрые дела не требуют больших усилий с вашей стороны - достаточно более внимательно относиться к словам подруги и наградой вам станет похвала любимой. Секрет заключается не в том, что вы делаете то, что вам нравится, а то, о чем она вас просила. Чувствуете разницу? Выполнение просьбы подруги говорит о том, что вы иногда слушаете и ее, а не только спортивных комментаторов. Выберите несколько самых настойчивых ее просьб и исполните их!

3- Удивите ее

Даже самый маленький романтический жест может сыграть очень большую роль в отношениях. Если вы знаете, что любимая устала после тяжелого рабочего дня, закажите на дом ужин в ее любимом ресторане или кафе. Или же порадуйте подругу ее любимыми деликатесами или мороженым. Небольшой подарок (необязательно дорогой или особенный) непременно поднимет ей настроение - достаточно подумать о том, что может ей понравиться. Выбирайте вещи в ее вкусе - это подчеркнет особую интимность и доверительность ваших отношений и ваше осведомленность о ее пристрастиях. Женщины с радостью получают такие неожиданные подарки, кроме того, они подчеркивают, насколько для вас важны детали.

4- Проводите с ней больше времени

Посмотрим правде в глаза: многие мужчины приходят в негодование при одном только намеке на то, что поменять компанию приятелей на вечер с любимой. Как ни странно, женщины вполне понимают ваши чувства и осознают значение крепкой мужской дружбы, поэтому большинство из них все же готовы на некоторое время отстраниться и отойти на второй план. Тем не менее, очень важно, чтобы вы понимали, что на самом деле главное в вашей жизни - друзья-приятели или любимая. Дать ей почувствовать это - не менее важно, чем понимать это самому. Время от времени, вместо того, чтобы отправляться в бар с друзьями, посмотрите дома кино. Такие мелкие уступки приносят большие плоды, поэтому убедитесь в том, что женщина осознает, на какую жертву вы ради нее идете. Иногда, если подруга не оценила степени вашего самопожертвования, не лишним будет ей об этом намекнуть. Ни в коем случае не жалейте об этом «великодушном» поступке - не нужно витать мыслями где-то далеко, как будто отбывая повинность; пусть любимая знает, что, хотя вы и дорожите компанией друзей, всегда готовы провести время с любимой женщиной.

5- Напишите ей записку

Силу печатного или написанного слова еще никто не отменял - иногда одно слово в записке убедительнее, чем сотни велеречивых комплиментов. Небольшие романтические послания и записки - вот вещественное доказательство ваших чувств, которое женщины не так часто получают. Это не обязательно должны быть слащавые признания из женских романов. Достаточно написать на открытке что-то личное, а не просто подписать ее, или же оставить записку, если вы побывали в квартире в ее отсутствие. Не бойтесь романтических жестов и обращений - смело пишите «твой» или «с любовью» вместо «увидимся» и «пока» - вы ведь обращаетесь не к коллеге по работе, а к любимой женщине.

6- Чаще выходите в свет вместе

Как ни странно, отношения укрепляют не крупные события, вроде дней рождения, свадьбы общих знакомых и годовщин знакомства, а обыденные ужины и завтраки. Просто старайтесь проводить побольше времени вместе: ходите в кино, в ресторан или на футбол. Помните, что общие эмоции сближают. Появление вместе в публичных местах придает женщине уверенности в том, что вы - пара, так что даже в кругу друзей эта тесная связь сохраняется.

В целом, секрет длительных гармоничных отношений в том, чтобы напоминать друг другу о своих отношениях. Небольшие жесты внимания с обеих сторон - и вы будете чаще думать о ней, а она будет более снисходительно смотреть на ваши недостатки и проступки, что и продлевает отношения. Помните, что все, упомянутое в этой статье, никогда не будет лишним, слишком дорогим или несвоевременным. Эти знаки внимания не изменят вашу жизнь, но помогут сохранить нежные и гармоничные отношения, ведь жизнь, по большому счету, и состоит из таких мелочей.

 
« Пред.   След. »

репортажи, Фото и видео, новости шоу бизнеса, афиша