Друзья, всем привет! Срочно нужна Ваша помощь! Краткая предыстория: делаю сайт, пользователи задают вопросы и внизу вопросов есть социальные кнопки (можно лайкать или поделиться). Так вот все очень даже хорошо, но есть проблема: счетчик Twitter не работает из-за того, что ссылка вопрос отображается в кириллице. На сайте стоит компонент easydiscuss в настройках нашел там можно изменить алиас, но это очень долго и нудно. Так вот я нашел php отвечающий полю алиаса, нужно только вставить код транслит и все, но я не знаю php. Вот кусок кода который нужно изменить: Код (PHP): <div class="si-form-row"> <div class="span2"> <label for="alias"><?php echo JText::_( 'COM_EASYDISCUSS_POST_ALIAS' );?></label> </div> <div class="span10"> <input type="text" maxlength="255" size="100" id="alias" name="alias" class="input-xxlarge" value="<?php echo $this->escape( $this->post->alias );?>" /> </div> </div> Нужно вставить транслит на вот эту часть: Код (PHP): <?php echo $this->escape( $this->post->alias );?>" Помогите ребята, пожалуйста!!! Добру добром отвечаю! PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Может это поможет? Код (PHP): <?php echo $this->escape(mb_convert_encoding($this->post->alias, 'utf-8', mb_detect_encoding($this->post->alias)) );?>
Наверное так правильнее: Код (PHP): <?php $joomla_twit_alias = $this->escape($this->post->alias ); echo mb_convert_encoding($joomla_twit_alias, 'utf-8', mb_detect_encoding($joomla_twit_alias));?>
Точно этот файл PHP. У них не спрашивал, вот наткнулся и сразу к Вам. В интернете тоже нету ни слово об этом. А если вставить вот этот код: Код (PHP): <?php // функция превода текста с кириллицы в траскрипт function encodestring($st) { // Сначала заменяем "односимвольные" фонемы. $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_", "abvgdeeziyklmnoprstufh'iei"); $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_", "ABVGDEEZIYKLMNOPRSTUFH'IEI"); // Затем - "многосимвольные". $st=strtr($st, array( "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya", "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA", "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye" ) ); // Возвращаем результат. return $st; } ?> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Приведите пример ссылки - так будет понятнее. Откуда берется кириллица? В функции, что вы привели - русские буквы заменяются на созвучные английские. Может это то что Вам нужно.
Может быть. На ссылку посмотрите и твитните. http://gguomble.com/guomble/куда-можно-устроиться-на-работу-без-стажа.html Добавлено спустя 5 минут 38 секунд: Сделал вот так, но все равно никакого движения, даже система не залипает Код (PHP): <?php echo (function encodestring($this->escape( $this->post->alias )) { // Сначала заменяем "односимвольные" фонемы. $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_", "abvgdeeziyklmnoprstufh'iei"); $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_", "ABVGDEEZIYKLMNOPRSTUFH'IEI"); // Затем - "многосимвольные". $st=strtr($st, array( "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya", "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA", "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye" ) ); // Возвращаем результат. return $st; } ?>);?> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Вам можно попробовать так: http://htmlweb.ru/php/example/translit.php много ошибок. Код (PHP): <?php echo str2url($this->escape( $this->post->alias )); function rus2translit($string) { $converter = array( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '\'', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', ); return strtr($string, $converter); } function str2url($str) { // переводим в транслит $str = rus2translit($str); // в нижний регистр $str = strtolower($str); // заменям все ненужное нам на "-" $str = preg_replace('~[^-a-z0-9_\/\:]+~u', '-', $str); // удаляем начальные и конечные '-' $str = trim($str, "-"); return $str; } ?> Только меня смущает $this. Увидеть бы начало кода. Кое что поменял! 14:33
Понял, сейчас попробую. Код (PHP): <?php /** * @package EasyDiscuss * @copyright Copyright (C) 2010 Stack Ideas Private Limited. All rights reserved. * @license GNU/GPL, see LICENSE.php * * EasyDiscuss is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ defined('_JEXEC') or die('Restricted access'); JHTML::_('behavior.modal' , 'a.modal' ); // Force isDiscussion = true $this->composer->setIsDiscussion(true); $editor = JFactory::getEditor(); ?> <?php if( $this->config->get( 'layout_editor' ) == 'bbcode' ) { ?> <script type="text/javascript"> EasyDiscuss.require() .library('markitup') .done(function($){ $('.dc_reply_content').markItUp( $.getEasyDiscussBBCodeSettings ); }); </script> <?php } ?> <script type="text/javascript"> EasyDiscuss.require() .script('composer', 'legacy') .done(function($){ $.Joomla( 'submitbutton' , function( action ){ if(action == 'cancel') { window.location.href = 'index.php?option=com_easydiscuss&view=posts'; } else if(action == 'submit') { if(admin.post.validate(false, 'newpost')) { admin.post.submit(); } } else { $.Joomla( 'submitform' , [action] ); } }); discuss.composer.init("<?php echo $this->composer->classname; ?>"); // User selection. window.selectUser = function( id , name ) { $( '#user_id' ).val( id ); $( '#user_name' ).val( name ); // Close dialog $.Joomla( 'squeezebox' ).close(); }; // Initialize custom Tabs. // Try to test if there is a 'default' class in all of the tabs if( $( 'ul.formTabs' ).children().find( '.default' ).html() != null ) { var id = $( 'ul.formTabs' ).children().find( '.default' ).attr( 'id' ); var tab = id.substr( id.indexOf( '-' ) + 1 , id.length ); $( 'ul.formTabs' ).children().find( '.default' ).parent().addClass( 'active' ); $( 'div.formTabsContent' ).children().hide(); $( '.tab-' + tab ).show(); } else { $( 'ul.formTabs a:first' ).tab( 'show' ); } }); </script> <div class="discuss-form"> <form id="adminForm" name="adminForm" action="index.php" method="post" enctype="multipart/form-data" class="adminform-body"> <div class="discuss-form <?php echo $this->composer->id; ?>" data-id="<?php echo $this->composer->id; ?>" data-editor="<?php echo $this->config->get('layout_editor') ?>"> <div id="dc_post_notification"><div class="msg_in"></div></div> <div class="row-fluid"> <div class="span8"> <div class="widget accordion-group"> <div class="whead accordion-heading"> <a href="javascript:void(0);" data-foundry-toggle="collapse" data-target="#option01"> <h6><?php echo JText::_( 'COM_EASYDISCUSS_POST_DETAILS' ); ?></h6> <i class="icon-chevron-down"></i> </a> </div> <div id="option01" class="accordion-body collapse in"> <div class="wbody"> <div class="si-form-row"> <div class="span2"> <label for="title"><?php echo JText::_( 'COM_EASYDISCUSS_POST_TITLE' );?></label> </div> <div class="span10"> <input type="text" maxlength="255" size="100" id="title" name="title" class="input-xxlarge" value="<?php echo $this->escape( $this->post->title );?>" /> </div> </div> <div class="si-form-row"> <div class="span2"> <label for="alias"><?php echo JText::_( 'COM_EASYDISCUSS_POST_ALIAS' );?></label> </div> <div class="span10"> <input type="text" maxlength="255" size="100" id="alias" name="alias" class="input-xxlarge" value="<?php echo $this->escape( $this->post->alias );?>" /> </div> </div> <?php if ($this->config->get('main_private_post', false)) { ?> <div class="si-form-row"> <label class="checkbox" for="private"> <input id="private" type="checkbox" name="private" value="1" <?php echo $this->post->private ? ' checked="checked"' : '';?>/> <?php echo JText::_('COM_EASYDISCUSS_MAKE_THIS_POST_PRIVATE');?> </label> </div> <?php } ?> <div class="si-form-row"> <!-- <?php if( $this->config->get( 'layout_editor') == 'bbcode' ) { ?> <textarea class="dc_reply_content full-width" name="dc_reply_content" class="full-width"><?php echo $this->escape( $this->post->content ); ?></textarea> <?php } else { ?> <?php echo $editor->display( 'dc_reply_content', $this->escape( $this->post->content ), '100%', '350', '10', '10' , array( 'pagebreak' , 'readmore' ) ); ?> <?php } ?> --> <?php echo $this->composer->getEditor(); ?> </div> <div class="control-group"> <?php //echo $this->loadTemplate( 'form.location.php' ); ?> </div> <?php echo $this->composer->getFields(); ?> </div> </div> </div> </div> <div class="span4"> <div class="widget accordion-group"> <div class="whead accordion-heading"> <a href="javascript:void(0);" data-foundry-toggle="collapse" data-target="#publishoptions"> <h6><?php echo JText::_( 'COM_EASYDISCUSS_PUBLISHING_OPTIONS' );?></h6> <i class="icon-chevron-down"></i> </a> </div> <div id="publishoptions" class="accordion-body collapse in"> <div class="wbody"> <div class="si-form-row"> <div class="span4"> <label for="title"><?php echo JText::_( 'COM_EASYDISCUSS_CATEGORY' );?></label> </div> <div class="span8"> <?php echo $this->nestedCategories; ?> </div> </div> <div class="si-form-row"> <div class="span4"> <label><?php echo JText::_( 'COM_EASYDISCUSS_POST_AUTHOR' ); ?></label> </div> <div class="span8"> <input type="text" disabled="disabled" id="user_name" value="<?php echo $this->creatorName;?>" class="input-xlarge" /> <input type="hidden" name="user_id" id="user_id" value="<?php echo $this->post->user_id;?>" /> [url="index.php?option=com_easydiscuss&view=users&tmpl=component&browse=1&browsefunction=selectUser"] <?php echo JText::_( 'COM_EASYDISCUSS_BROWSE_USERS' ); ?>[/url] </div> </div> <div class="si-form-row"> <div class="span4"> <label><?php echo JText::_( 'COM_EASYDISCUSS_PUBLISHED' ); ?></label> </div> <div class="span8"> <?php echo $this->renderCheckbox( 'published' , $this->post->published ); ?> </div> </div> </div> </div> </div> </div> </div> <input type="hidden" name="id" id="id" value="<?php echo $this->post->id; ?>" /> <input type="hidden" name="parent_id" id="parent_id" value="<?php echo $this->post->parent_id; ?>" /> <input type="hidden" name="option" value="com_easydiscuss" /> <input type="hidden" name="controller" value="posts" /> <input type="hidden" id="task" name="task" value="submit" /> <input type="hidden" name="source" value="<?php echo $this->source ;?>" /> <?php echo JHTML::_( 'form.token' ); ?> </div> </form> </div> Попробовал, тоже нет. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Нашел файл где встречается id="dc_share" и сразу вспомнил, это место где отображаются социальные кнопки Код (Text): if( !empty($socialButtonsHere) ) { $socialButtons = '<div id="dc_share" '.$float.'>' . $digg . $linkedIn . $googlebuzz . $googleone . $googleShare . $twitterbutton . $facebookLikes . '</div>'; } echo $socialButtons; Он только один в php, остальные css и less. Я думаю он никакого значения не имеет к представленной проблеме.
Maputo, но как так? Он же не отвечает за "общий" алиас или Вы решили изменить алиас только для твиттера? Там есть $twitterbutton = DiscussTwitter::getButtonHTML( $post, $position ); Код (Text): public static function populateCategoryLinkage($childId) { $arr = array(); $category = DiscussHelper::getTable( 'Category' ); $category->load($childId); $obj = new stdClass(); $obj->id = $category->id; $obj->title = $category->title; $obj->alias = $category->alias; $arr[] = $obj; if((!empty($category->parent_id))) { DiscussHelper::accessCategoryLinkage($category->parent_id, $arr); } $arr = array_reverse($arr); return $arr; } public static function accessCategoryLinkage($childId, &$arr) { $category = DiscussHelper::getTable( 'Category' ); $category->load($childId); $obj = new stdClass(); $obj->id = $category->id; $obj->title = $category->title; $obj->alias = $category->alias; $arr[] = $obj; if((!empty($category->parent_id))) { DiscussHelper::accessCategoryLinkage($category->parent_id, $arr); } else { return false; } } public static function showSocialButtons( $post, $position = 'vertical' ) { require_once DISCUSS_CLASSES . '/google.php'; require_once DISCUSS_CLASSES . '/googleshare.php'; require_once DISCUSS_CLASSES . '/twitter.php'; require_once DISCUSS_CLASSES . '/facebook.php'; require_once DISCUSS_CLASSES . '/digg.php'; require_once DISCUSS_CLASSES . '/linkedin.php'; $config = DiscussHelper::getConfig(); $document = JFactory::getDocument(); $googlebuzz = ''; $twitterbutton = ''; $twitterbutton = DiscussTwitter::getButtonHTML( $post, $position ); $googleone = DiscussGoogleOne::getButtonHTML( $post, $position ); $googleShare = DiscussGoogleShare::getButtonHTML( $post, $position ); $facebookLikes = DiscussFacebook::getLikeHTML( $post, $position ); $digg = DiscussDigg::getButtonHTML( $post , $position ); $linkedIn = DiscussLinkedIn::getButtonHTML( $post , $position ); $float = ($position == 'vertical') ? 'class="discuss-post-share float-r"' : 'class="discuss-post-share"'; $socialButtons = ''; $socialButtonsHere = $digg . $linkedIn . $googlebuzz . $googleone . $googleShare . $twitterbutton . $facebookLikes; if( !empty($socialButtonsHere) ) { $socialButtons = '<div id="dc_share" '.$float.'>' . $digg . $linkedIn . $googlebuzz . $googleone . $googleShare . $twitterbutton . $facebookLikes . '</div>'; } echo $socialButtons; } Добавлено спустя 4 минуты 11 секунд: И пожалуйста ответьте, что означает :: между DiscussTwitter::getButtonHTML ?
:: - это вместо ->. Используется для обращения к статическим методам и свойствам класса. -> - обращение к свойствам и методам экземпляра класса и т.п. Т.е. DiscussTwitter - это класс, а не объект. Во теперь меня интересует переменная $post. Где она формируется. Если ее транслитировать - наверняка это применится ко всем кнопкам.
Их много, но ищу так $post = и нашел : $post = DiscussHelper::getTable('Post'); $post = JTable::getInstance( 'Posts' , 'Discuss' ); $post = JRequest::get( 'POST' ); $post = new stdClass(); $post = "Media multipart posting\n"; $post = Auth_OpenID:arams_from_string($str); больше всего встречается $post = DiscussHelper::getTable('Post');
Эта вроде больше похожа на правду: Посмотреть бы что вокруг нее... Можно ли там проинициализировать функцию стандартным путём? Эта! Это всё в одном файле? И есть ли там чтонибудь типа DiscussHelper::setTable
Эту смотрите! Вот здесь $post = JRequest::get( 'POST' ); Скинул от того места где встретился до конца (просто ограничение 60000 символов) Код (Text): //JRequest::checkToken('request') or jexit( 'Invalid Token' ); $config = DiscussHelper::getConfig(); $acl = DiscussHelper::getHelper( 'ACL' ); $my = JFactory::getUser(); $app = JFactory::getApplication(); $post = JRequest::get( 'POST' ); $output = array(); $output['id'] = $post[ 'post_id' ]; $postTable = DiscussHelper::getTable('Post'); $postTable->load($post['post_id']); $categoryTable = DiscussHelper::getTable('category'); $categoryTable->load($postTable->category_id); $postAccess = DiscussHelper::getPostAccess($postTable, $categoryTable); if(!$postAccess->canEdit()) { DiscussHelper::setMessageQueue( JText::_('COM_EASYDISCUSS_SYSTEM_INSUFFICIENT_PERMISSIONS') , DISCUSS_QUEUE_ERROR ); $app->redirect( DiscussRouter::_('index.php?option=com_easydiscuss&view=ask&id='.$post['post_id'] , false ) ); return $app->close(); } // do checking here! if( empty( $post[ 'dc_reply_content' ] ) ) { DiscussHelper::setMessageQueue( JText::_('COM_EASYDISCUSS_ERROR_REPLY_EMPTY' ) , DISCUSS_QUEUE_ERROR ); $app->redirect( DiscussRouter::_('index.php?option=com_easydiscuss&view=ask&id='.$post['post_id'] , false ) ); return $app->close(); } // Rebind the post data $post['dc_reply_content'] = JRequest::getVar( 'dc_reply_content', '', 'post', 'none' , JREQUEST_ALLOWRAW ); $post['content'] = $post['dc_reply_content']; $data['content_type'] = DiscussHelper::getEditorType( 'reply' ); $postTable->bind($post); $recaptcha = $config->get( 'antispam_recaptcha'); $public = $config->get( 'antispam_recaptcha_public'); $private = $config->get( 'antispam_recaptcha_private'); if( !$config->get( 'antispam_recaptcha_registered_members') && $my->id > 0 ) { $recaptcha = false; } if( $recaptcha && $public && $private ) { require_once DISCUSS_CLASSES . '/recaptcha.php'; $obj = DiscussRecaptcha::recaptcha_check_answer( $private , $_SERVER['REMOTE_ADDR'] , $post['recaptcha_challenge_field'] , $post['recaptcha_response_field'] ); if(!$obj->is_valid) { $ajax->reloadCaptcha(); $ajax->reject('error', JText::_('COM_EASYDISCUSS_POST_INVALID_RECAPTCHA_RESPONSE')); $ajax->send(); } } else if( $config->get( 'antispam_easydiscuss_captcha' ) ) { $runCaptcha = DiscussHelper::getHelper( 'Captcha' )->showCaptcha(); if( $runCaptcha ) { $response = JRequest::getVar( 'captcha-response' ); $captchaId = JRequest::getInt( 'captcha-id' ); $discussCaptcha = new stdClass(); $discussCaptcha->captchaResponse = $response; $discussCaptcha->captchaId = $captchaId; $state = DiscussHelper::getHelper( 'Captcha' )->verify( $discussCaptcha ); if( !$state ) { DiscussHelper::setMessageQueue( JText::_('COM_EASYDISCUSS_INVALID_CAPTCHA' ) , DISCUSS_QUEUE_ERROR ); $app->redirect( DiscussRouter::_('index.php?option=com_easydiscuss&view=post&layout=edit&id=' . $postTable->id , false ) ); return $app->close(); } } } // @rule: Bind parameters if( $config->get( 'reply_field_references' ) ) { $postTable->bindParams( $post ); } // Bind file attachments if( $acl->allowed( 'add_attachment' , '0' ) ) { $postTable->bindAttachments(); } $isNew = false; // @trigger: onBeforeSave DiscussEventsHelper::importPlugin( 'content' ); DiscussEventsHelper::onContentBeforeSave('post', $postTable, $isNew); if ( !$postTable->store() ) { $ajax->reject('error', JText::_('COM_EASYDISCUSS_ERROR')); $ajax->send(); } // Process poll items $includePolls = JRequest::getBool( 'pollitems' , false ); // Process poll items here. if( $includePolls && $config->get( 'main_polls') ) { $pollItems = JRequest::getVar( 'pollitems' ); $pollItemsOri = JRequest::getVar( 'pollitemsOri' ); // Delete polls if necessary since this post doesn't contain any polls. //if( !$isNew && !$includePolls ) if( count( $pollItems ) == 1 && empty( $pollItems[0] ) && !$isNew ) { $postTable->removePoll(); } // Check if the multiple polls checkbox is it checked? $multiplePolls = JRequest::getVar( 'multiplePolls' , '0' ); if( $pollItems ) { // As long as we need to create the poll answers, we need to create the main question. $pollTitle = JRequest::getVar( 'poll_question' , '' ); // Since poll question are entirely optional. $pollQuestion = DiscussHelper::getTable( 'PollQuestion' ); $pollQuestion->loadByPost( $postTable->id ); $pollQuestion->post_id = $postTable->id; $pollQuestion->title = $pollTitle; $pollQuestion->multiple = $config->get( 'main_polls_multiple' ) ? $multiplePolls : false; $pollQuestion->store(); if( !$isNew ) { // Try to detect which poll items needs to be removed. $remove = JRequest::getVar( 'pollsremove' ); if( !empty( $remove ) ) { $remove = explode( ',' , $remove ); foreach( $remove as $id ) { $id = (int) $id; $poll = DiscussHelper::getTable( 'Poll' ); $poll->load( $id ); $poll->delete(); } } } for( $i = 0; $i < count($pollItems); $i++ ) { $item = $pollItems[$i]; $itemOri = isset( $pollItemsOri[$i] ) ? $pollItemsOri[$i] : ''; $value = (string) $item; $valueOri = (string) $itemOri; if( trim( $value ) == '' ) continue; $poll = DiscussHelper::getTable( 'Poll' ); if( empty( $valueOri ) && !empty( $value ) ) { // this is a new item. $poll->set( 'value' , $value ); $poll->set( 'post_id' , $postTable->get( 'id' ) ); $poll->store(); } else if( !empty( $valueOri ) && !empty( $value ) ) { // update existing value. if( ! $poll->loadByValue( $valueOri , $postTable->get( 'id' ) ) ) { $poll->set( 'value' , $value ); $poll->store(); } } } } } if( !empty( $postTable->id ) ) { //Clear off previous records before storing $ruleModel = DiscussHelper::getModel( 'CustomFields' ); $ruleModel->deleteCustomFieldsValue( $postTable->id, 'update' ); // Process custom fields. $fieldIds = JRequest::getVar( 'customFields' ); if( !empty($fieldIds) ) { foreach( $fieldIds as $fieldId ) { $fields = JRequest::getVar( 'customFieldValue_'.$fieldId ); if( !empty($fields) ) { // Cater for custom fields select list // To detect if there is no value selected for the select list custom fields if( in_array( 'defaultList', $fields ) ) { $tempKey = array_search( 'defaultList', $fields ); $fields[ $tempKey ] = ''; } } $postTable->bindCustomFields( $fields, $fieldId ); } } } // @trigger: onAfterSave DiscussEventsHelper::onContentAfterSave('post', $postTable, $isNew); //get parent post $parentId = $postTable->parent_id; $parentTable = DiscussHelper::getTable( 'Post' ); $parentTable->load($parentId); // filtering badwords $postTable->title = DiscussHelper::wordFilter( $postTable->title); $postTable->content = DiscussHelper::wordFilter( $postTable->content); //all access control goes here. $canDelete = false; if( DiscussHelper::isSiteAdmin() || $acl->allowed('delete_reply', '0') || $postTable->user_id == $user->id ) { $canDelete = true; } // @rule: URL References $postTable->references = $postTable->getReferences(); // set for vote status $voteModel = DiscussHelper::getModel( 'Votes' ); $postTable->voted = $voteModel->hasVoted( $postTable->id ); // get total vote for this reply $postTable->totalVote = $postTable->sum_totalvote; //load porfile info and auto save into table if user is not already exist in discuss's user table. $creator = DiscussHelper::getTable( 'Profile' ); $creator->load( $postTable->user_id ); $postTable->user = $creator; //default value $postTable->isVoted = 0; $postTable->total_vote_cnt = 0; $postTable->likesAuthor = ''; $postTable->minimize = 0; if( $config->get( 'main_content_trigger_replies' ) ) { // process content plugins DiscussEventsHelper::importPlugin( 'content' ); DiscussEventsHelper::onContentPrepare('reply', $postTable); $postTable->event = new stdClass(); $results = DiscussEventsHelper::onContentBeforeDisplay('reply', $postTable); $postTable->event->beforeDisplayContent = trim(implode("\n", $results)); $results = DiscussEventsHelper::onContentAfterDisplay('reply', $postTable); $postTable->event->afterDisplayContent = trim(implode("\n", $results)); } $theme = new DiscussThemes(); $question = DiscussHelper::getTable( 'Post' ); $question->load( $postTable->parent_id ); $recaptcha = ''; $enableRecaptcha = $config->get('antispam_recaptcha'); $publicKey = $config->get('antispam_recaptcha_public'); $skipRecaptcha = $config->get('antispam_skip_recaptcha'); $model = DiscussHelper::getModel( 'Posts' ); $postCount = count( $model->getPostsBy( 'user' , $my->id ) ); if( $enableRecaptcha && !empty( $publicKey ) && $postCount < $skipRecaptcha ) { require_once DISCUSS_CLASSES . '/recaptcha.php'; $recaptcha = getRecaptchaData( $publicKey , $config->get('antispam_recaptcha_theme') , $config->get('antispam_recaptcha_lang') , null, $config->get('antispam_recaptcha_ssl'), 'edit-reply-recaptcha' . $postTable->id); } // Get the post access object here. $category = DiscussHelper::getTable( 'Category' ); $category->load( $postTable->category_id ); $access = $postTable->getAccess( $category ); $postTable->access = $access; // Get comments for the post $commentLimit = $config->get( 'main_comment_pagination' ) ? $config->get( 'main_comment_pagination_count' ) : null; $comments = $postTable->getComments( $commentLimit ); $postTable->comments = DiscussHelper::formatComments( $comments ); $theme->set('question' , $question); $theme->set('post' , $postTable); $theme->set('category' , $category); $html = $theme->fetch( 'post.reply.item.php' ); if( $recaptcha && $public && $private ) { $output[ 'type' ] = 'success.captcha'; } if(!$parentTable->islock) { $output[ 'type' ] = 'locked'; } $message = ( $isNew ) ? JText::_( 'COM_EASYDISCUSS_POST_STORED' ) : JText::_( 'COM_EASYDISCUSS_EDIT_SUCCESS' ); $state = 'success'; // Let's set our custom message here. DiscussHelper::setMessageQueue( $message , $state ); $redirect = JRequest::getVar( 'redirect' , '' ); if( !empty( $redirect ) ) { $redirect = base64_decode( $redirect ); return $this->setRedirect( $redirect ); } $this->setRedirect( DiscussRouter::getPostRoute( $post['parent_id'] , false ) ); } } Все эти $post = не в одном файле. Добавлено спустя 3 минуты 12 секунд: Нету.
Вот строчка подходящая: Код (PHP): $post['content'] = $post['dc_reply_content']; Сейчас напишу код...
Вобщем попробуйте так: Вместо $post['content'] = $post['dc_reply_content']; написать следующее: Код (PHP): $post['content'] = rus2translit($post['dc_reply_content']); function rus2translit($string) { $converter = array( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '\'', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', ); return trim(preg_replace('~\s+~u', '-', strtolower(strtr($string, $converter))), "-"); } Добавлено спустя 22 секунды: Наверняка
Maputo, должен Вас разочаровать, не работает Добавлено спустя 3 минуты 47 секунд: Вот twitter.php : Код (Text): <?php /** * @package EasyDiscuss * @copyright Copyright (C) 2010 Stack Ideas Private Limited. All rights reserved. * @license GNU/GPL, see LICENSE.php * EasyDiscuss is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ defined('_JEXEC') or die('Restricted access'); require_once DISCUSS_HELPERS . '/helper.php'; class DiscussTwitter { public static function getButtonHTML( $row, $position = 'vertical' ) { $config = DiscussHelper::getConfig(); if( !$config->get('integration_twitter_button') ) { return ''; } $html = ''; $style = $config->get( 'integration_twitter_button_style' ); $dataURL = DiscussRouter::getRoutedURL('index.php?option=com_easydiscuss&view=post&id=' . $row->id, false, true); $width = '80px'; if( $position == 'horizontal' ) { $style = 'horizontal'; $width = '80px'; } else { $width = '55px'; $style = 'vertical'; } $html = '<div class="social-button retweet" style="width: ' . $width . '"><a href="http://twitter.com/share" class="twitter-share-button" data-url="' . $dataURL . '" data-counturl="'.$dataURL.'" data-count="' . $style .'">Tweet</a><script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script></div>'; return $html; } } Добавлено спустя 1 минуту 19 секунд: Но я что то не уверен, что отсюда можно изменить
Остался ещё один вариант: Вместо всё той же строчки: Код (PHP): $post['dc_reply_content'] = rus2translit($post['dc_reply_content']); function rus2translit($string) { $converter = array( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '\'', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', ); return trim(preg_replace('~\s+~u', '-', strtolower(strtr($string, $converter))), "-"); } $post['content'] = $post['dc_reply_content']; А по хорошему глянуть бы файл с описанием класса DiscussTwitter Или