我想将博客条目的任何标题转换为用户友好的URL.我使用rawurlencode()来做到这一点,但它给了我很多奇怪的字符串,如%s.
该算法应该考虑像Ö,Ä等德国字符.我想从标题创建一个网址,并能够通过解码网址获得标题.
我尝试了一些代码:http://pastebin.com/L1SwESBn在其他一些问题中提供,但它似乎是一种方式.
例如 HÖRZU.de -> hoerzu-de -> HÖRZU.de
有任何想法吗?
看看我的前端URL生成的Str :: slug,但只是想知道你们如何用路由等来实现它,例如,你们如何将http://www.example.com/courses/1更改为http ://www.example.com/courses/this-course
我正在尝试添加 slug,以便帖子的标题出现在网址中,但我在控制台上收到此消息:
You are trying to add a non-nullable field 'slug' to post without a default; we can't do that Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py
Run Code Online (Sandbox Code Playgroud)
模型.py
class Post(models.Model):
title = models.CharField(max_length=100)
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = self.slug or slugify(self.title)
super().save(*args, …Run Code Online (Sandbox Code Playgroud) 我正在写一个slug生成器来制作漂亮的网址.我想将m2转换为m2,但是以通用的方式为所有上标(或下标)执行此操作,而不仅仅是简单的替换语句.
有任何想法吗?
我正在尝试实现类似于django/python中的堆栈溢出的URL方案.
例如,pk与标题的slug一起存储在URL中,因此对于这个问题(id#4787731),URL是
https://stackoverflow.com/questions/4787731/canonical-links-and-301-redirect-if-url-doesnt-match-slug
Run Code Online (Sandbox Code Playgroud)
如果我以后更改标题(或者只是将一些随机的crud放入网址),那么该网站仍然会知道我追究的是哪个问题(通过ID)并将301重定向到正确的网址 - 例如尝试.
https://stackoverflow.com/questions/4787731/canonical-links-MODIFIED-URL
Run Code Online (Sandbox Code Playgroud)
所以
在我的网页中包含规范链接的最佳方式是什么?
<link rel ="canonical"href ="/sf/ask/335141201/">
(我可以使用get_absolute_url)
注意 - 这个问题类似,但仅针对动态生成slu or或静态生成slug的情况.
我做了一些谷歌搜索,试图找出URL中使用的"slug"这个词的来源.但是我似乎无法找到任何相关信息.有谁知道这个词的来源?
我试图使用Doctrine Extensions包中的Sluggable行为:
http://gediminasm.org/article/sluggable-behavior-extension-for-doctrine-2
我使用注释在我的实体中设置了一个可缓冲的字段,但是当我使用表单创建实例时,该值不会被设置,这会导致以下错误:
SQLSTATE [23000]:完整性约束违规:1048列'slug'不能为空
这是我的控制器的代码:
$form = $this->createFormBuilder($section)
->add('title', 'text')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($section);
$em->flush();
if (empty($id)) {
return $this->redirect($this->generateUrl('ContentBundle_section_new'));
}
else {
return $this->redirect($this->generateUrl('ContentBundle_section_edit', array('id' => $id)));
}
}
}
Run Code Online (Sandbox Code Playgroud)
实体类中的可缓冲字段定义:
/**
* @Gedmo\Slug(fields={"title"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
Run Code Online (Sandbox Code Playgroud)
如果我将slug字段添加到formbuilder并手动设置一个值,它可以正常工作,但显然我不想搞乱这个.
有人可以帮忙吗?
谢谢
我正在尝试在Django中编写一个抽象的父模型,这将帮助我从许多其他子模型的名称字段中创建一些slug字段.它使用反编码,适用于从西里尔字母到拉丁字母的透射形式.然后它使用django的slugify函数来删除垃圾.
class SlugModel(models.Model):
class Meta:
abstract = True
name = models.CharField(max_length=128, default=u'')
slug = models.CharField(max_length=128,blank=True)
def save(self, *args, **kwargs):
if not self.slug:
slug = slugify(unicode(self.name).encode('trans'))
else:
slug = self.slug
count = self.__class__.objects.filter(slug = slug).count()
if count > 1:
if slug[-2]=='_':
count = int(slug[-1])
slug = slug[:-2]
self.slug = '{0}_{1}'.format(slug,count+1)
else:
self.slug = slug
super(self.__class__, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
class Foo(SlugModel):
pass
Run Code Online (Sandbox Code Playgroud)
当我尝试保存一些Foo对象时会出现问题:它会导致RuntimeError(超出最大递归深度).我究竟做错了什么?我该怎么写得super(self.__class__, self).save(*args, **kwargs)正确?
我使用MongoDB/mongoose存储具有以下模式的博客帖子:
PostSchema = mongoose.Schema({
title: {type: String},
body: {type: String}
});
Run Code Online (Sandbox Code Playgroud)
现在我的帖子网址如下所示: http://www.example.local/posts/571f78d077b4454bafcfcced
我希望我的帖子包含如下的slug:
http://www.example.local/posts/571f78d077b4454bafcfcced/how-to-make-and-store-slug-for-title
所以我的问题是:
http://www.example.local/posts/571f78d077b4454bafcfcced到http://www.example.local/posts/571f78d077b4454bafcfcced/how-to-make-and-store-slug-for-title(nodejs,nginx,客户端).谢谢!
EIDT:我还发现在StackOverflow数据库viwer中用于id为503429的qoestion存储非slugged标题.那么,每当问题被要求时,SO是否计算出slu?
我使用第三方模块fishpig在我的magento商店安装了wordpress.
我有一个名为list.phtml的页面,它使用$this->getPostListHtml()我添加了另一个div并复制它来发布类别中的所有内容,但现在它只是将第一个div中的帖子复制到第二个div中.如何创建一个独特的第二个div,所以当在后端发布帖子时,它只会发布到同一页面上的第二个div.目前我通过slug和post collection获得分类,然后设置顺序(asc)然后我循环通过类别和骑手为每个页面拉动相似的内容.我有几个页面,但在每个车手页面上,它仍然必须在Team下面有Team 2的帖子.我希望这是有道理的.
CPT /团队/ list.phtml
<?php
/**
* Team (Rider) - Landing Page
*/
/* @var $this test_Wordpress_Block_Cpt_Type_View */
/* @var $helper test_Wordpress_Helper_Data */
$helper = $this->helper('wordpress');
/* @var $postType Fishpig_Wordpress_Addon_CPT_Model_Type */
$postType = $this->getPostType();
$categorySlug = $this->getCurrentCategorySlug();
$allCategories = $helper->getAllCategories();
$instagramHandles = array(
'skate' => 'testskate',
'surf' => 'testsurf',
'snow' => 'testsnow',
'mx' => 'testmx',
'testunity' => 'testunity',
'girls' => 'testgirls',
);
$textRider = ($categorySlug == 'testunity') ? 'Ambassador' : 'Rider';
$htmlRiderPicks = $this->getChildHtml('picks');
$hasEvents …Run Code Online (Sandbox Code Playgroud) slug ×10
django ×3
php ×2
python ×2
string ×2
url ×2
c# ×1
doctrine-orm ×1
foreach ×1
friendly-url ×1
laravel-4 ×1
magento ×1
mongodb ×1
mongoose ×1
node.js ×1
redirect ×1
seo ×1
subscript ×1
superscript ×1
symfony ×1
terminology ×1
url-encoding ×1
wordpress ×1