Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Inside

Função smart slug

Recommended Posts

Caros amigos,

 

encontrei esta função para slug e fiz alguma adaptações mas não consegui fazer a última desejada.

 

Gostaria de implantar um função para cortar palavras (smart slug).

 

Preciso que o script corte preposições como "a, as, ao, aos, após, isso, isto, já, la, lá, lhe, lhes, lo, há, mas, me, na, não, nas, nem, no, nos, nós, o, os, ou, do, dos, e, é, ela, elas, ele, eles, em, eu, te, que"

 

Não consegui implantar isto, nas tentativas que fiz ele acaba cortando a letra "a" das palavras e isso não não deveria acontecer.

 

Preciso que o corte seja ex.: "disse que a casa estava fechada" resultado final: "disse-casa-estava-fechada".

 

Ai vai o script, se alguém puder ajudar.

 

slug.js

 

jQuery.fn.slug = function(options) {
	var settings = {
		slug: 'slug',
		hide: true
	};
	
	if(options) {
		jQuery.extend(settings, options);
	}
	
	$this = jQuery(this);

	jQuery(document).ready( function() {
		if (settings.hide) {
			jQuery('input.' + settings.slug).after("<span class="+settings.slug+"></span>");
			jQuery('input.' + settings.slug).hide();
		}
	});

makeSlug = function() {
var slug = jQuery.trim($this.val())

.replace(/[àâãá]/g,"a").replace(/[èêé]/g,"e").replace(/[ìí]/g,"i").replace(/[òõôó]/g,"o").replace(/[ùüú]/g,"u").replace(/[ç]/g,"c").replace(/[%]/g,"-por-cento").replace(/\s+/g,'-').replace(/[^a-zA-Z0-9\-]/g,'-').toLowerCase() // See http://www.djangosnippets.org/snippets/1488/
.replace(/\ate\b/g,"")
.replace(/\-{2,}/g,'-')
.replace(/(^[-])|([-]$)/g,'');
$('input.' + settings.slug).val(slug);
$('span.' + settings.slug).text(slug);

		}
		
	jQuery(this).keyup(makeSlug);
		
	return $this;
};

 

 

 

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="slug.js"></script>
<script type="text/javascript"><!--
jQuery(document).ready(function(){
	jQuery("#title").slug();
});
// --></script>

 

<form action="slug_captura.asp" method="post" style="text-align:left">
<label style="float:none;" for="title">Title:</label></p>
<input id="title" style="float: none; font-size: x-large; width:80%; display: block;" name="title" />
<label style="float:none;" for="slug">Slug:</label></p>
<input id="slug" class="slug" style="float:none;" name="slug" />
<br>
<input type="submit" value="Enviar">
</form>

 

 

 

Obrigado pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o algoritmo para oque vc quer é simples.

 

remova essas palavras antes de tudo. Vai ser a primeira coisa que o teu script vai fazer.

 

Trocando " a ", por "-".

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, vc não leu o que disse ?

 

espaço+a+espaço por -. Ai não tem como ele trocar letras no meio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu certo, veja esse título:

 

Fundo Social encaminha donativos para famílias de Cubatão

 

Ficou assim:

 

fun-o-social-ncaminha-onativos-para-familias-cubatao

 

 

Veja que cortou a preposição "de" mas cortou também as letras "d" e "e" de outras palavras.

 

 

Usei isto:

 

.replace(/[ de ]/g,"-")

 

 

Alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pq vc usou uma lista amigo.. ai vai fazer isso mesmo.

 

veja a diferença:

<script>
  
var str = 'Fundo Social encaminha donativos para as famílias de Cubatão';
str = str.toLowerCase();
str = str.replace(/\s(de|as)\s/g, '-');//antes de tudo removo "de" e "as"
str = str.replace(/\s/g,'-');
console.log( str );

</script>

saida:

fundo-social-encaminha-donativos-para-famílias-cubatão

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.