tag:blogger.com,1999:blog-32139002024-03-13T07:33:41.600-07:00Blogger DevelopersThe latest updates on Blogger developer tools
Unknownnoreply@blogger.comBlogger53125tag:blogger.com,1999:blog-3213900.post-82664044491956083842013-04-09T19:03:00.000-07:002020-05-28T21:58:13.983-07:00Improvements to the Blogger template HTML editorPosted by: <a class="g-profile" href="http://plus.google.com/106884078206744750860" target="_blank">+Samantha Schaffer</a> and <a class="g-profile" href="http://plus.google.com/116429990887322072749" target="_blank">+Renee Kwang</a>, Software Engineer Interns.
<br />
<br />
Whether you’re a web developer who builds blog templates for a living, or a web-savvy blog owner who prefers to make changes to your template using HTML, CSS or JavaScript, you may be interested in some enhancements that we made to <a href="http://support.google.com/blogger/bin/answer.py?hl=en&answer=46870">Blogger’s Template HTML Editor</a>.<br />
<br />
Your blog’s HTML template is the source code that controls the appearance of your blog. This template can be customized to appear however you’d like. The improved HTML template editor now supports line numbering, syntax highlighting, auto-indentation and code folding to make editing your template much easier.<br />
<br />
Suppose we wanted to move the date of a blog post underneath the post title, similar to the <a href="http://buzz.blogger.com/">Blogger Buzz blog</a>. To do this, follow these steps:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_37Tb6dWvAo/UWTB1E9dk7I/AAAAAAAAABc/rj1M_5IFnYQ/s1600/post-image-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="172" src="http://1.bp.blogspot.com/-_37Tb6dWvAo/UWTB1E9dk7I/AAAAAAAAABc/rj1M_5IFnYQ/s640/post-image-01.png" width="640" /></a></div>
Click the “Template” tab on the Blogger dashboard, then the “Edit HTML” button, to see the new template HTML editor:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-zLFObgjvhAo/UWTA1PgpsnI/AAAAAAAAABY/pwZtjtGFJPY/s1600/post-image-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="338" src="http://1.bp.blogspot.com/-zLFObgjvhAo/UWTA1PgpsnI/AAAAAAAAABY/pwZtjtGFJPY/s640/post-image-02.png" width="640" /></a></div>
Locate the “Blog1” widget quickly using the new “Jump to widget” drop down:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-atnW4SM-en0/UWTA1XHSS0I/AAAAAAAAAA4/txd1V96_t6w/s1600/post-image-03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="http://1.bp.blogspot.com/-atnW4SM-en0/UWTA1XHSS0I/AAAAAAAAAA4/txd1V96_t6w/s320/post-image-03.png" width="320" /></a></div>
This widget controls how your blog posts are displayed. The code inside the widget is folded by default. Clicking the new fold markers ‘►’ next to the line numbers expands the widget and reveals a set of “includable” tags:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-mW6R2t6PHPs/UWTA1QYkqwI/AAAAAAAAAA8/KuERawbudCo/s1600/post-image-04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="274" src="http://4.bp.blogspot.com/-mW6R2t6PHPs/UWTA1QYkqwI/AAAAAAAAAA8/KuERawbudCo/s640/post-image-04.png" width="640" /></a></div>
Inside the “main” includable is the block of code that renders the post date:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-pUOnfHVrlJk/UWTA2ZfjYBI/AAAAAAAAABU/R1SZUKxjnOE/s1600/post-image-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="http://1.bp.blogspot.com/-pUOnfHVrlJk/UWTA2ZfjYBI/AAAAAAAAABU/R1SZUKxjnOE/s640/post-image-05.png" width="640" /></a></div>
Cut the post date code section and move it to where we want it, in this case, under the post title in the “post” includable:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-NdCduZmfkHo/UWTA2cvEjGI/AAAAAAAAABM/3vFkcd_tEU8/s1600/post-image-06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="http://3.bp.blogspot.com/-NdCduZmfkHo/UWTA2cvEjGI/AAAAAAAAABM/3vFkcd_tEU8/s640/post-image-06.png" width="640" /></a></div>
To check our changes, click the new “Preview template” button to see the updates:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-OozJRDbEsbQ/UWTA2tTtGYI/AAAAAAAAABQ/WGfUycPxTlA/s1600/post-image-07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="http://1.bp.blogspot.com/-OozJRDbEsbQ/UWTA2tTtGYI/AAAAAAAAABQ/WGfUycPxTlA/s640/post-image-07.png" width="640" /></a></div>
The post date is exactly where we want it, so tab back to “Edit template”, hit “Save template” and we’re done!<br />
<br />
Finally, we’ve added a “Format template” button that automatically cleans up the indentation of the template, and made it possible to search for text by pressing “Ctrl+F” once you’ve clicked into the editor. To find and replace text occurrences one by one, use “Ctrl+Shift+F” or to find and replace all occurrences at once, use “Ctrl+Shift+R”.<br />
<div>
<br />
We worked on this project as part of Google Australia’s <a href="http://www.google.com/intl/en/jobs/students/tech/internships/australia/2013-bold-engineering-intern-sydney.html">BOLD Diversity Internship Program</a>. We hope you enjoy the changes we’ve made!</div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-3213900.post-7380973074102586592012-06-19T17:29:00.000-07:002020-05-28T21:58:13.930-07:00Blogger API v3<p>One of the most requested features that developers have for the Blogger JSON API is the ability to create posts. So have a quick guess what the following HTTP request does?</p>
<pre>
POST https://www.googleapis.com/blogger/v3/blogs/8070105920543249955/posts/ HTTP/1.0
Host: www.googleapis.com
Authorization: Bearer <OAuth2 key>
Content-Type: application/json
{
"kind": "blogger#post",
"blog": {
"id": "8070105920543249955"
},
"title": "A new post",
"content": "With <b>exciting</b> content..."
}
</pre>
<p>That’s right, Blogger API v3 gives you the ability to <a href="https://developers.google.com/blogger/docs/3.0/reference/posts/insert">create posts</a>! Oh, and <a href="https://developers.google.com/blogger/docs/3.0/reference/posts/update">edit</a>, <a href="https://developers.google.com/blogger/docs/3.0/reference/posts/delete">delete</a> and <a href="https://developers.google.com/blogger/docs/3.0/reference/posts/search">search</a> them as well!</p>
<p>There is documentation that covers all this new functionality. Firstly we have a <a href="https://developers.google.com/blogger/docs/3.0/getting_started">Getting Started</a> document that gives you an overview of using the API. Then there is a more detailed <a href="https://developers.google.com/blogger/docs/3.0/using">Using Blogger API</a> guide that shows how you would use the API. Finally the <a href="https://developers.google.com/blogger/docs/3.0/reference/">API Reference</a> that covers the fine details, like argument and result specifications for all the calls.</p>
<p>If you have any questions about how to use this new API, please join in the discussion on the <a href="https://groups.google.com/forum/?fromgroups#!forum/bloggerdev">Blogger Developer group</a>.</p>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-3213900.post-13878735464800022282012-03-23T01:58:00.000-07:002020-05-28T21:58:13.655-07:00Blogger Documentation has moved to developers.google.comBlogger documentation has a new home: it has moved to <a href="https://developers.google.com/blogger/">developers.google.com/blogger</a>!<br />
<br />
I have re-arranged the documentation a little to make it easier to navigate, but it is largely the same documentation you will remember from <a href="http://code.google.com/apis/blogger">code.google.com/apis/blogger</a>. If you find anything is out of place or hard to find, please let us know on the <a href="https://groups.google.com/forum/#!forum/bloggerdev">Blogger Developer forum</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-37275596276608928602012-01-21T17:40:00.000-08:002020-05-28T21:58:13.766-07:00Customising Threaded Comments<p>Recently we released an update to Blogger’s commenting system that enables people to directly respond to comments. This capability is known as <a href="http://buzz.blogger.com/2012/01/engage-with-your-readers-through.html">Threaded Comments</a>. We are pleased to see quite a few people diving in and writing tutorials, including a <a href="http://www.youtube.com/watch?v=LsVV2nyfIEM">screencast</a>. It’s wonderful to see the enthusiasm of our developers!</p>
<p>In this post we will look at what are the changes required to modify a custom template to enable Threaded Comments, once you have fulfilled the requirements outlined in the <a href="http://buzz.blogger.com/2012/01/engage-with-your-readers-through.html">Threaded Comments</a> announcement post on Buzz.blogger.com. We will then look at how to customise the look and feel of the Threaded Comments using just CSS, and also have a quick peek at alternatives.</p>
<p>Please note, these instructions may not work if your blog’s template is heavily customised. Your template may possibly missing some of the <code>b:includable</code>s that the instructions below depend on. Please try the following instructions on your template, but if they don’t work come to our <a href="https://groups.google.com/forum/#!forum/bloggerdev">Blogger Developer forum</a> and get some help with patching your template. </p>
<p>The first step is to Edit the HTML for your Template, which can be found inside Settings under the Template tab. You must make sure to expand the Widget Templates, as we need to modify the main Blog Widget Template. To find the main Blog Widget code, search for the following Blogger Layouts Template code:</p>
<pre><b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog'></pre>
<p>Inside the <code>b:widget</code> are a series of <code>b:includable</code> blocks. These act a lot like functions in programming languages, in that they can be called from other <code>b:includable</code> blocks to insert chunks of HTML. The only special block is the includable called <code>main</code>, which is where the Layout Template engine starts when rendering the Widget’s content. If you don’t see content inside the <code>b:widget</code>, you need to click the Expand Widget Templates radio button above the edit area.</p>
<p>The Layout Template should include the following code:</p>
<pre><b:if cond='data:post.showThreadedComments'>
<b:include data='post' name='threaded_comments'/>
<b:else/>
<b:include data='post' name='comments'/>
</b:if></pre>
<p>The interesting part is that we have a fork here, implemented as a <code>b:if</code> conditional block, that decides whether to render the comments as threaded or not. The need for this split can be seen on the Threaded Comments announcement on <a href="http://buzz.blogger.com/2012/01/engage-with-your-readers-through.html">Buzz.blogger.com</a>. </p>
<p>As a quick aside, if you don’t have this code, but instead just have something like the following:</p>
<pre><b:include data='post' name='comments'/></pre>
<p>Then you can get threaded comments by replacing this b:include with the above logic block, assuming you fulfill the requirements laid out in the <a href="http://buzz.blogger.com/2012/01/engage-with-your-readers-through.html">Threaded Comments announcement post on Buzz.blogger.com</a>.</p>
<p>Now you can look at the implementation of the threaded_comments includable by searching for the following line of code:</p>
<pre><b:includable id='threaded_comments' var='post'></pre>
<p>This code is responsible for rendering the actual threaded comments to screen. You can choose to override this code block to customise the look of your comments, but it is worth noting that if you do, you won’t get updates to this functionality as we change the implementation in the future.</p>
<p>There are two new data members we have introduced with this feature release that you can use to render comment threads:</p>
<ul>
<li><code>data:post.commentSrc</code> This is the source to the javascript library that handles actions</li>
<li><code>data:post.commentHtml</code> This is the rendered HTML for the comment thread</li>
</ul>
<p>If you want to change the look and feel of your comments, we strongly recommend you use the Template Designer to set custom CSS to style the Threaded Comments. We suggest you customise the comments by modifying the property "Advanced > Add CSS". For example, you can add the following CSS code to change the look:</p>
<pre>.comments blockquote {
border: 1px solid black; color: white; font: Helvetica;
} // draws a border around comment bodies, sets the text font and colour
.comments .inline-thread li { list-style-type: decimal; } // numbers replies
</pre>
<p>Finally, you can implement your own version of Threaded Comments by walking the <code>data:post.comments</code> directly. This will contain all the comments, ordered by time of comment, now with an optional extra field <code>data:comment.inReplyTo</code> which will contain the <code>id</code> of the parent comment, if there is one.</p>
<p>If you have any questions about how to customise your Blogger Comments, please feel free to drop by the <a href="https://groups.google.com/forum/#!forum/bloggerdev">Blogger Developer Forum</a>. We’re glad to help!</p>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-3213900.post-13566797310591548302012-01-04T22:06:00.000-08:002020-05-28T21:58:13.642-07:00An easier to use interface for the Blogger JSON APIAs I have been reviewing the applications to use the <a href="http://code.google.com/apis/blogger/docs/2.0/json/getting_started.html">Blogger JSON API</a>, I have noticed that a fair number of you appear to be integrating with Blogger JSON API using JavaScript. So, in the interests of making things easier for all of you, here is a walk through of using the just released <a href="http://googlecode.blogspot.com/2011/11/javascript-client-library-for-google.html">JavaScript Client Library for Google APIs</a> to access the Blogger JSON API.<br />
The first step is exploring the methods we can call in the <a href="http://code.google.com/apis/explorer/">Google APIs Explorer</a>. The method in the Blogger JSON API collection that most people use, understandably, is the method to list the most recent posts for a Blog - <a href="http://code.google.com/apis/explorer/#_s=blogger&_v=v2&_m=posts.list"><code>posts.list</code></a>. This method takes one required field - the <code>blogId</code> that identifies a particular blog - and a number of optional arguments that allow us to tune what information is returned.<br />
The information I am requesting from the Blogger JSON API is the post titles and content for the <a href="http://code.blogger.com/">code.blogger.com</a> blog which has a <code>blogId</code> of 3213900. To limit the returned data to just the post titles and content, we use the optional argument <code>fields</code> with the value of <code>items(content,title)</code>. Here is a link to the <a href="http://code.google.com/apis/explorer/#_s=blogger&_v=v2&_m=posts.list&blogId=3213900&fields=items(content,title)">Google APIs Explorer</a> with the appropriate information pre-filled so you can see both the underlying query that is sent to the Google APIs servers, as well as the shape of the returned JSON data.<br />
The next step is the JavaScript required to request this data and make use of it. I am using the JavaScript Client Library to both construct the query, as well as navigate the results, reducing the complexity of the code.<br />
To load the library, all we have to do is include a script in our HTML that loads the library as follows:<br />
<pre><script src="https://apis.google.com/js/client.js?onload=init"></script></pre>
The part of this code to pay attention to is the argument <code>onload=init</code>. This nominates the <code>init</code> function to be called once the JavaScript Client Library has loaded. The <code>init</code> function is where we configure the client key and the API we want to work with:<br />
<pre>function init() {
gapi.client.setApiKey('YOUR_API_KEY');
gapi.client.load('blogger', 'v2', function() {
// ...
});
}</pre>
You can retrieve the API Key from your project on the <a href="https://code.google.com/apis/console/">Google APIs Console</a>, once you have requested that I enable the Blogger API for your project. The <code>gapi.client.load</code> function takes the API name, and version, of the API you want to use, and a callback function to run once the API support code has been loaded. In this code, we are loading the Blogger v2 API.<br />
Inside the <code>gapi.client.load</code> callback, we have the following code to configure a request to the Google APIs servers:<br />
<pre>var request = gapi.client.blogger.posts.list({
'blogId': 3213900,
'fields': 'items(content,title)'
});</pre>
Note how we now no longer need to construct our own query url. The JavaScript Client Library deals with all the messy issues of making sure the arguments are correctly escaped. Next, we can issue the request to the servers as follows:<br />
<pre>request.execute(function(response) {
// ...
});</pre>
The execute method takes a callback function that will be executed once the Google APIs servers respond. The most important part of this callback function is the data that is handed to us in the <code>response</code> argument. In the body of the callback function, I iterate over the items member to pull out the titles and contents of all the returned posts:<br />
<pre>for (var i = 0; i < response.items.length; i++) {
$("#target").append("<h2>" + response.items[i].title + "</h2>");
$("#target").append(response.items[i].content);
if (i+1<response.items.length) {
$("#target").append("<hr/>");
}
}</pre>
The eagle eyed among you will have noticed that I am using <a href="http://jquery.com/">jQuery</a> to insert the returned HTML into the DOM. I am using the latest stable jQuery hosted on Google’s Libraries API.<br />
You can see the results on <a href="http://code-blogger.appspot.com/">code-blogger.appspot.com</a>. I have used <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a> as the starting point for building this example, to get all the latest HTML5 magic. If you have any questions about this sample, please post them to the <a href="https://groups.google.com/group/bloggerdev">Blogger Developers Group</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-7808232474604183522011-12-18T22:40:00.000-08:002020-05-28T21:58:13.969-07:00Changes to ProfileID for Google+ profile users<p>It’s wonderful to see a lot of our users taking us up on our offer to merge our Blogger Profile with the Google+ Profile. For developers this means that there is one small wrinkle to worry about - the format of the <code>ProfileId</code> for these migrated users has changed.</p>
<p>What’s a <code>ProfileId</code>, and what’s it used for? </p>
<p>The <code>ProfileId</code> is a component of the path for the <a href="http://code.google.com/apis/blogger/docs/2.0/developers_guide_protocol.html#RetrievingMetafeed">Retrieving a List of Blogs</a> Blogger GData protocol call, which can either be the value <code>default</code>, which is the recommended value and means the currently authenticated user, or alternatively it can be the profile identifier of the current authenticated user. Up until now, the profile identifier has always been numeric, but for the converted Google+ Profile Blogger users, this is no longer the case.</p>
<p>For users that have converted to using Google+ Profiles on Blogger, the <code>ProfileId</code> can be derived as follows. Take the Google+ profile url for a user that has chosen to convert, for example <a href="https://plus.google.com/114895967455102275039/">https://plus.google.com/114895967455102275039/</a>, then take the numeric portion at the end of the URL, prepend it with a g, and like magic, you have the new Blogger <code>ProfileId</code>.</p>
<p>If you have any questions, please do not hesitate to ask on the <a href="https://groups.google.com/group/bloggerdev">Blogger Developers group</a>, and if you are on Google+, have a look at our <a href="https://plus.google.com/110587955497525318489/posts">Blogger Google+ Page</a>.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-72988361732276467792011-11-08T16:24:00.000-08:002020-05-28T21:58:13.918-07:00Introducing custom mobile templates<p>Many Bloggers put a lot of time and effort into creating a unique look for their blog, so today we’re excited to announce that custom templates are now also viewable from mobile devices.</p>
<p>If you have a custom template for your blog and want it to appear on mobile browsers as well, visit the “Template” tab of your dashboard, click on the gear icon beneath the mobile template preview.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-kEQMaYxebJs/Tq-eMEEQTPI/AAAAAAAAARk/OtL411nW0l8/s1600/Screen%2Bshot%2B2011-10-20%2Bat%2B11.14.31%2BAM.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="185" width="320" src="http://2.bp.blogspot.com/-kEQMaYxebJs/Tq-eMEEQTPI/AAAAAAAAARk/OtL411nW0l8/s320/Screen%2Bshot%2B2011-10-20%2Bat%2B11.14.31%2BAM.png" /></a></div>
<p style="clear:both">Then select “Custom” from the “Choose mobile template” pulldown.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-dyyH6l2heQI/Tp5hR4sdzdI/AAAAAAAAAPs/HkYfZ8kpAwQ/s1600/mobile_template_picker_pulldown.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="287" width="320" src="http://1.bp.blogspot.com/-dyyH6l2heQI/Tp5hR4sdzdI/AAAAAAAAAPs/HkYfZ8kpAwQ/s320/mobile_template_picker_pulldown.png" /></a></div>
<p style="clear:both">Your template may not look exactly the same on a mobile browser, so click “Preview” to make sure it appears the way you want it to before you save it. </p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-0WqjKBhin9A/Tp5hIvXfoaI/AAAAAAAAAPg/3uRo92-FlmA/s1600/mobile_template_picker.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="288" width="320" src="http://2.bp.blogspot.com/-0WqjKBhin9A/Tp5hIvXfoaI/AAAAAAAAAPg/3uRo92-FlmA/s320/mobile_template_picker.png" /></a></div>
<p style="clear:both">If you have gadgets on your blog, you can also control which of them will be available in mobile view, using this new attribute: <code>mobile</code> in <code><b:widget></code> tag. It can be <code>'default'</code>, <code>'yes'</code>, <code>'no'</code>, or <code>'only'</code>.</p>
<p>The widgets that display on mobile by default are the following:
<ul><li>Header</li>
<li>Blog</li>
<li>Profile</li>
<li>PageList</li>
<li>AdSense</li>
<li>Attribution</li></ul></p>
<p>The following widget will not be available in mobile view, because it’s a <b>BlogArchive</b> widget.</p>
<pre>
<b:widget id='BlogArchive1' title='Blog Archive' type='BlogArchive'>
</pre>
<p>To make it available in mobile view, add <code>mobile=’yes’</code> attribute to it.</p>
<pre>
<b:widget id='BlogArchive1' <span style="color:red;">mobile='yes'</span> title='Blog Archive' type='BlogArchive'>
</pre>
<p>Setting <code>mobile</code> to <code>'no'</code> makes a widget not display in mobile view, even if available in mobile view by default.</p>
<pre>
<b:widget id='Attribution1' <span style="color: red;">mobile='no'</span> title='Attribution' type='Attribution'>
</pre>
<p>You can also make a widget available only in mobile view by setting it to <code>'only'</code>.</p>
<pre>
<b:widget id='BlogArchive1' <span style="color: red;">mobile='only'</span> title='Blog Archive' type='BlogArchive'>
</pre>
<p>The content of a widget can modified for mobile view with the <code>boolean</code> variable <code>data:blog.isMobile</code>.</p>
<pre>
<div class="widget-content">
<b:if cond="data:blog.isMobile">
<!-- Show a text link in mobile view.-->
<a href="http://www.blogger.com">
Powered By Blogger
</a>
<b:else/>
<!-- Show an image link in desktop view.-->
<a href="http://www.blogger.com">
<img expr:src="data:fullButton" alt="Powered By Blogger"/>
</a>
</b:if>
</div>
</pre>
<p>The above template HTML shows different contents between desktop view and mobile view, depending on the value of the <code>data:blog.isMobile</code> variable.</p>
<p>You can conditionally give different CSS properties to a same class between desktop view and mobile view, as the <code><body></code> tag of Blogger mobile templates has <code>mobile</code> as its class. First, make sure the <code><body></code> tag of your custom template is same as the following one. </p>
<pre>
<body expr:class='&quot;loading&quot; + data:blog.mobileClass'>
</pre>
<p>Then, you can define different CSS properties for desktop and mobile view.</p>
<pre>
/* For desktop view */
.date-posts {
margin: 0 -$(separator.outdent);
padding: 0 $(separator.outdent);
}
/* For mobile view */
.mobile .date-posts {
margin: 0;
padding: 0;
}
</pre>
<p>We hope you will enjoy making your very own mobile templates.</p>
<p><b>Updated:</b> Changed <code>data:mobile</code> to <code>data:blog.isMobile</code></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-60496431115191864002011-10-13T17:51:00.000-07:002020-05-28T21:58:13.816-07:00Template Change: Analytics Section<p>Today we have made a change to the Layouts Template language to improve <a href="http://www.google.com/analytics/">Google Analytics</a> coverage. We have added the following includable section. </p>
<pre>
<b:includable id='google-analytics' var='blog'>
<b:if cond='data:blog.analyticsAccountNumber'>
<script type='text/javascript'>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '<data:blog.analyticsAccountNumber/>']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = (document.location.protocol == 'https:' ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</b:if>
</b:includable>
</pre>
<p>This now allows you to include analytics tracking on your blog by adding the following include call to your template, preferably right before the close body tag so it doesn’t delay the visible page being rendered:</p>
<pre>
<b:include name='google-analytics' data='blog'/>
</pre>
<p>For more details on the benefits you get from using Google Analytics, see <a href="http://buzz.blogger.com/2011/10/google-analytics-support-in-blogger.html">this post on Blogger Buzz</a>. If you have any questions about this new functionality, please join in the discussion on the <a href="http://groups.google.com/group/bloggerDev">Blogger Developer Group</a>.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-2522072389303342312011-09-27T16:42:00.001-07:002020-05-28T21:58:13.708-07:00Trying on the new Dynamic Views from BloggerAs you may have noticed, the Blogger Development Network Blog looks a lot different today. That’s because we—along with a few other Google blogs—are trying out a new set of Blogger templates called Dynamic Views.
<a href="http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html">Launched today</a>, Dynamic Views is a unique browsing experience that makes it easier and faster for readers to explore blogs in interactive ways. We’re using the Classic view, but you can also preview this blog in any of the other six new views by using the view selection bar at the top left of the screen.
<iframe allowfullscreen="" frameborder="0" height="284" src="http://www.youtube.com/embed/lpDQF2lFnBU" width="500"></iframe>
We’re eager to hear what you think about the new Dynamic Views. You can submit feedback using the “Send feedback” link on the bottom right of this page.
If you like what you see here, and we hope you do, we encourage you to try out the new look(s) on your own blog—read the <a href="http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html">Blogger Buzz post</a> for more info.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-2376764748775265142011-09-08T01:59:00.000-07:002020-05-28T21:58:13.695-07:00Blogger JSON API now availableToday we’re announcing the public availability of the Blogger JSON API we <a href="http://www.google.com/events/io/2011/sessions/building-a-business-web-presence-using-blogger-apis.html">spoke about at this year’s Google I/O</a>. The focus of this release is to make it easier to build applications that interoperate with Blogger by using a lightweight JSON syntax.<br />
<br />
One of the driving reasons for this release is to recognize how much the world has changed during the lifetime of Blogger. Where once we built everything as desktop applications, we now spend our time building full-blown applications inside the browser frame using JavaScript and HTML5 apps.<br />
<br />
To start using the Blogger JSON API, sign in to the <a href="https://code.google.com/apis/console">Google API Console</a> and request Blogger API access. This will take you to a form that asks you to explain how you intend to use the API, and an estimate of your daily traffic levels. This information helps us evaluate your request for approval and give us a better understanding of how the community is using our APIs as we work to improve them.<br />
<br />
To demonstrate how much easier this API is to use, especially for JavaScript mashups, here is a JavaScript renderer for the Blogger Buzz blog.<br />
<br />
<pre><html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
// Request an API Key for the Blogger API from
// https://code.google.com/apis/console/
var apikey = "YOUR API KEY HERE";
// You can find the blogId in the HTML source of a blog
var blogId = "2399953";
// When the document is loaded
$(document).ready(function() {
// Make a JSONP request for the Posts on the Blogger Buzz blog
$.ajax({
url:"https://www.googleapis.com/blogger/v2/blogs/”+
blogId+”/posts?key="+apikey,
dataType: "jsonp",
success: function(data, textStatus, jqXHR) {
var items = [];
// Construct a chunk of HTML for each post
// containing the Post title, content, and a
// link to the post author.
$.each(data.items, function(index, value) {
items.push("<h2>"+value.title+"</h2>"+value.content+
"<p>Posted by <em><a href='"+value.author.url+"'>"+
value.author.displayName+"</a></em></p>");
});
// And finally, append the generated content to the page body.
$(items.join('')).appendTo('body');
}
});
});
</script>
</html></pre><br />
<p>It is important to understand that this release is the first step on a journey of discovery, as we work with all of you to build a better API for using Blogger. Please review the <a href="https://code.google.com/apis/blogger/docs/2.0/json/getting_started.html">documentation</a>, and join in the discussion on <a href="http://groups.google.com/group/bloggerdev">Blogger Developer Group</a> and let us know what we can add to the API to make it more useful for you!</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-68794809442312066092011-06-15T19:20:00.000-07:002020-05-28T21:58:13.876-07:00Clarifying recent changes to Blogger’s feed accessRecently we updated Blogger’s authorization system to be more consistent with regards to the difference in roles between <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">blogger.com</span> and <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">blogspot.com</span>. As a result, some third-party integrations that depended on an unintended quirk of our previous system broke. This post explains the issue and how to update your implementation to be compliant with the correct authorization behavior.<br />
<br />
The <a href="http://code.google.com/apis/blogger/docs/2.0/developers_guide_protocol.html">Blogger Developer’s Guide</a> explains how to authenticate to our services on the URLs under <span class="Apple-style-span" style="color: #38761d; font-family: 'Courier New', Courier, monospace;">http://www.blogger.com/feeds/<i>profileID</i>/</span>. The unintended quirk allowed authentication requests against public feed URLs hosted on the <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">blogspot.com</span> domain. Under the updated system, this is no longer permitted.<br />
<br />
Now, authorization is only permitted against <span class="Apple-style-span" style="color: #38761d; font-family: 'Courier New', Courier, monospace;">https://www.blogger.com/feeds/</span> and <span class="Apple-style-span" style="color: #38761d; font-family: 'Courier New', Courier, monospace;">http://www.blogger.com/feeds/</span>. The feeds are not going away; instead we are separating the read-only, unauthenticated subscriptions from authenticated access to Blogger’s read-write APIs.<br />
<br />
We apologize that the impact of this behavior change was not made more clear initially. If you have any further questions on this matter — or Blogger development in general — please post a question in <a href="https://groups.google.com/group/bloggerdev">our BloggerDev forum</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-83982405864979627572011-03-25T12:05:00.001-07:002020-05-28T21:58:14.012-07:00Using OACurl to explore Blogger’s APIBlogger’s GData API is now available over HTTPS using OAuth 2. These changes result in less code, increased productivity, and enhanced security. Let’s take a look at how it works using OACurl, a wrapper for the <span style="font-family: 'Courier New', Courier, monospace;">curl</span> command line tool that authenticates you using OAuth.<br />
<br />
<span style="font-size: large;">Prerequisites</span><br />
<br />
First up you need to install <a href="http://mercurial.selenic.com/">Mercurial</a> and <a href="http://maven.apache.org/">Maven</a>. Mercurial is the source revision control software used by the OACurl project. Maven is a java build system used to download and include the dependencies required by OACurl. Once we begin using <span style="font-family: 'Courier New', Courier, monospace;">oacurl</span> we will use <a href="http://tidy.sourceforge.net/">HTML Tidy</a> to make the returned XML readable.<br />
<br />
<span style="font-size: large;">Getting OACurl</span><br />
<br />
Now that you have installed Maven and Mercurial, you can checkout <span style="font-family: 'Courier New', Courier, monospace;">oacurl</span> and build it as follows.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ hg clone https://oacurl.googlecode.com/hg/ oacurl</div><div style="font-family: "Courier New",Courier,monospace;">$ cd oacurl</div><div style="font-family: "Courier New",Courier,monospace;">$ mvn assembly:assembly</div><br />
Once you have done this you will have a shell script in your current directory called <span style="font-family: 'Courier New', Courier, monospace;">oacurl</span> that you can use to invoke <span style="font-family: 'Courier New', Courier, monospace;">oacurl</span> with all the appropriate Java class paths set for you.<br />
<br />
<span style="font-size: large;">Logging into Blogger</span><br />
<br />
Logging into Blogger using OAuth involves doing a round trip to Google’s servers to grant access for third parties. In the case of <span style="font-family: 'Courier New', Courier, monospace;">oacurl</span>, this involves invoking a web browser that shows you that oacurl is requesting access to your Blogger account. <br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ ./oacurl login --blogger</div><br />
Once you have granted access, then you will be able to explore Blogger’s API using <span style="font-family: 'Courier New', Courier, monospace;">oacurl</span>.<br />
Retrieving a list of your Blogger blogs<br />
<br />
A good place to start is to list out your blogs. This is an Atom feed where each item in the list is a blog owned by the user who requested it. <br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ ./oacurl https://www.blogger.com/feeds/default/blogs</div><br />
To see the blogs of a specific user you can change the default for a specific user’s profile id instead. For instance, here is a list of my blogs.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ ./oacurl https://www.blogger.com/feeds/16258312240222542576/blogs</div><br />
To make the output XML readable, I suggest piping the output from the commands through <span style="font-family: 'Courier New', Courier, monospace;">tidy</span> like this:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ ./oacurl https://www.blogger.com/feeds/default/blogs | tidy -xml -quiet -indent</div><br />
I will leave that off the following commands for readability.<br />
<br />
<span style="font-size: large;">Retrieving the feed of a specific Blogger blog</span><br />
<br />
To retrieve the content of a blogger blog, we select the blog we want from the list of blogs in the blog feed, and then follow the appropriate link. In this case we are using the post link as it stays within the scope of our OAuth authorisation.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;"><link rel='http://schemas.google.com/g/2005#post'</div><div style="font-family: "Courier New",Courier,monospace;"> type='application/atom+xml' href= 'http://www.blogger.com/feeds/4967929378133675647/posts/default' /></div><br />
<span style="font-size: large;">Posting a new entry to a feed</span><br />
<br />
If I wanted to post a new entry to my test blog, all I need to do is create a new entry in Atom format, and post it to the above url. So, I create a file with the following content called <span style="font-family: 'Courier New', Courier, monospace;">post.xml</span>:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;"><entry xmlns='http://www.w3.org/2005/Atom'></div><div style="font-family: "Courier New",Courier,monospace;"> <title type="text">Posting via OACurl</title></div><div style="font-family: "Courier New",Courier,monospace;"> <content type="xhtml">And some <b>content</b>.</content></div><div style="font-family: "Courier New",Courier,monospace;"></entry></div><br />
I can submit this to Blogger to create a new post like this:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ cat post.xml | ./oacurl -X POST https://www.blogger.com/feeds/4967929378133675647/posts/default</div><br />
This, of course, won’t work for you, as my test blog is only set up for me to post to. Modify the post URL in the command to match the one from one of the Blogger blogs you own. The result from the command is the fully expanded Atom entry for the post that was just created. <br />
<br />
This Atom entry contains the information you need to modify it. The link with <span style="font-family: 'Courier New', Courier, monospace;">rel='edit'</span> is the magic entry. For blogger, this is the same as the <span style="font-family: 'Courier New', Courier, monospace;">rel='self'</span> link. To edit the content for the blog post I just created, first I retrieve the content at the edit URL:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ ./oacurl https://www.blogger.com/feeds/4967929378133675647/posts/default/2170959137511831372 > post-edit.xml</div><br />
We can now modify the title and content using a text editor, and then PUT it back, in proper REST style.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">$ vi post-edit.xml</div><div style="font-family: "Courier New",Courier,monospace;">$ cat post-edit.xml | ./oacurl -X PUT https://www.blogger.com/feeds/4967929378133675647/posts/default/2170959137511831372 </div><br />
The Atom representation also contains the information required to create, retrieve, and delete the comments on this entry. See if you can spot the appropriate URLs in the output XML.<br />
<br />
<span style="font-size: large;">Using the libraries</span><br />
<br />
You can use various libraries with the Blogger GData APIs, for example the Java GData client, but it is very useful to understand what the library is doing for you under the covers. And exploring is fun!<br />
<br />
If you have any questions after reading this post, please feel free to post your questions to the <a href="http://groups.google.com/group/bloggerdev/">Blogger Dev Google Group</a>.<br />
<br />
<span style="font-size: large;">References</span><br />
<br />
OACurl: <a href="http://code.google.com/p/oacurl/">http://code.google.com/p/oacurl/</a><br />
OAuth: <a href="http://oauth.net/">http://oauth.net/</a> <br />
Mercurial: <a href="http://mercurial.selenic.com/">http://mercurial.selenic.com/</a><br />
Maven: <a href="http://maven.apache.org/">http://maven.apache.org/</a><br />
Atom overview: <a href="http://en.wikipedia.org/wiki/Atom_%28standard%29">http://en.wikipedia.org/wiki/Atom_(standard)</a> <br />
Atom Specification: <a href="http://www.atomenabled.org/developers/syndication/atom-format-spec.php">http://www.atomenabled.org/developers/syndication/atom-format-spec.php</a> <br />
HTML Tidy: <a href="http://www.w3.org/People/Raggett/tidy/">http://www.w3.org/People/Raggett/tidy/</a><br />
Java GData Client: <a href="http://code.google.com/p/gdata-java-client/">http://code.google.com/p/gdata-java-client/</a> <br />
Blogger Dev Google group: <a href="http://groups.google.com/group/bloggerdev">http://groups.google.com/group/bloggerdev</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-62784247580300409152009-06-16T06:52:00.000-07:002020-05-28T21:58:13.830-07:00Bug Fixes for 6/15Late last week we fixed a few bugs in Blogger’s Data API implementation:<div><ul><li>POSTs to the feed on the blog’s domain (rather than www.blogger.com) now correctly return the entry XML in the 201 response. This was the cause of a variety of strange errors, particularly when using the client libraries.</li><li>Posts created via the API now correctly reflect the blog’s “Comments Default for Posts” setting. [<a href="http://code.google.com/p/gdata-issues/issues/detail?id=1242">Issue 1242</a>]</li><li>The tracker image in feed entries is now consistently served over HTTPS, instead of leaving the scheme relative, to fix a crash with Microsoft Outlook.</li></ul><div>Having a reproducable problem? Please file a report in the <a href="http://code.google.com/p/gdata-issues/issues/list">issue tracker</a> and we’ll investigate.</div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-33764647024963309722009-03-13T14:16:00.000-07:002020-05-28T21:58:13.739-07:00Bug Fixes and Changes for 3/12Last night we pushed two Blogger Data API bug fixes:<br />
<ul><li><a href="http://code.google.com/p/gdata-issues/issues/detail?id=901">Drafts intermittently not appearing in the authenticated ATOM feed</a><br />
</li>
<li><a href="http://code.google.com/p/gdata-issues/issues/detail?id=979">Blogger v2 feeds do not contain gd:etag elements</a><br />
</li>
</ul><div>With these fixes you should see more reliable results for authenticated and V2 feeds.</div><br />
<div>We have also started to include a <code><div class="blogger-post-footer"></code> in each feed entry’s content element. Apologies if this has disrupted your app. We’re working on preventing this from appearing in authenticated requests, and that fix should be rolled out early next week.</div><div></div><br />
<div>API clients can and should in general ignore the “<code>blogger-post-footer</code>” element however, as it will be present if a blog admin specifies a Post Feed Footer in <span style="font-weight: bold;">Settings > Site Feed</span>.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-37124703275515179812009-01-09T17:12:00.000-08:002020-05-28T21:58:13.753-07:00Google Blog Converters 1.0 ReleasedJJ <a href="http://google-opensource.blogspot.com/2009/01/google-blog-converters-10-released.html">writes</a> on the <a href="http://google-opensource.blogspot.com/">Open Source at Google blog</a>:<br />
<blockquote>Blog authors around the world, Google would like to remind you that it's <a href="http://buzz.blogger.com/2008/12/your-blog-your-data.html">your blog, your data</a>. Now that <a href="http://www.blogger.com/">Blogger</a> allows users the ability to export all contents of their blog, the Data Liberation team would like to announce the <a href="http://code.google.com/p/google-blog-converters-appengine/">Google Blog Converters</a> project. This new Open Source project provides the ability to easily move blog posts and comments from service to service. This initial release provides Python libraries and runnable scripts that convert between the export formats of Blogger, <a href="http://www.livejournal.com/">LiveJournal</a>, <a href="http://www.movabletype.com/">MovableType</a>, and <a href="http://www.wordpress.com/">WordPress</a>.</blockquote><a href="http://code.google.com/p/google-blog-converters-appengine/">Give it a spin</a>. We’ve also released templates to run the converters on <a href="http://appengine.google.com/">Google App Engine</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-82696690804949861082008-10-01T16:45:00.000-07:002020-05-28T21:58:13.999-07:00Bug Fixes for October 1We released a few bug fixes tonight for regressions introduced last week:<br />
<ul><li><b><a href="http://code.google.com/p/gdata-issues/issues/detail?id=795">Issue 795</a>:</b> Blog metafeed did not contain <code>rel="self"</code> links in entries. This had the even more unfortunate side effect of breaking some of our sample code, which was using these links to derive blog IDs. </li>
<li><b><a href="http://code.google.com/p/gdata-issues/issues/detail?id=798">Issue 798</a>:</b> Query parameters were being repeated in the <code>rel="next"</code> and <code>rel="prev"</code> links in feeds, leading to invalid duplicate parameters.</li>
<li><b><a href="http://code.google.com/p/gdata-issues/issues/detail?id=803">Issue 803</a>:</b> Unable to fetch blog <code><entry></entry></code> documents.</li>
</ul>We apologize for these regressions, and hope that they’ve been fixed satisfactorily.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-74918483537164871002008-09-23T10:26:00.000-07:002020-05-28T21:58:13.942-07:00Feeds now include Media RSS thumbnailsWith the most recent release of Blogger we’ve added <a href="http://search.yahoo.com/mrss">Media RSS</a> <code><media:thumbnail></code> elements to both Atom and RSS feeds.<br />
<br />
The <code><media:thumbnail></code> element links to a 72x72 pixel version of the first image in the post. Only images uploaded through Blogger to PicasaWeb are available as thumbnails.<br />
<br />
We hope that you’ll be able to find fun uses for this new element. We’ve added thumbnail support to Blogger’s Blog List page element as a new option: Blog Lists can now display the most recent thumbnail from Blogger and other Media RSS–enabled feeds.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-78023326087950636922008-05-09T09:45:00.000-07:002020-05-28T21:58:13.955-07:00Atom Threading, Profile URLs, and RSS ValidationWe’ve just launched three additions / fixes to Blogger’s site feeds:<br /><ul><li><span style="font-weight: bold;"><code><thr:in-reply-to></code> elements from Atom Threading Extensions (<a href="http://www.ietf.org/rfc/rfc4685.txt">RFC 4685</a>).</span> These elements point from comment feed entries to the post feed entry that they’re commenting on. They’re especially useful for associating comments from the per-blog comment feed with the relevant posts.</li><li><span style="font-weight: bold;">Profile URLs in <person> entries.</span> We’re now adding <code><uri></code> elements to <code><person></code> elements that point to the person’s Blogger profile or homepage. This matches the behavior on Blogger’s HTML comment pages. We’re also adding these elements to post <code><entry></code>s, but only if the author of the post lists the blog on his profile.</li><li><span style="font-weight: bold;">RSS 2.0 feeds now validate.</span> We’ve added dummy <code>noreply@blogger.com</code> email addresses to <code><person></code> entries so that they validate in RSS 2.0, which requires an email address.</li></ul>How are these working out for you? Let us know in the <a href="http://groups.google.com/group/bloggerDev">Blogger API Google Group</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-39532667416637443442007-11-08T08:47:00.000-08:002020-05-28T21:58:13.777-07:00Atom Publishing Protocol Interop Meeting, November 13–14Blogger and Google Data API developers will be participating in the <a href="http://www.intertwingly.net/wiki/pie/November2007Interop">November 2007 Atom Publishing Protocol interoperability meeting</a>, happening this coming Tuesday and Wednesday, November 13–14. This is a chance for implementers of servers and clients to squash any remaining bugs in their APP code to make sure that they match the upcoming standard.<br /><br />Take a look at the <a href="http://www.intertwingly.net/wiki/pie/November2007Interop">wiki page</a> for instructions on how you can participate!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-48490493361865797972007-10-22T12:49:00.000-07:002020-05-28T21:58:13.790-07:00Video: Pamela Fox and Ryan Boyd talk about the Blogger JavaScript client library<div style="text-align: center;"><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/DjSO5nAK6wE"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/DjSO5nAK6wE" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></embed></object><br />(Or, <a href="http://youtube.com/watch?v=DjSO5nAK6wE">watch on YouTube</a>)</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-5760318747113119762007-10-20T08:32:00.000-07:002020-05-28T21:58:13.802-07:00Blogger JavaScript Client Library ReleasedPaul McDonald <a href="http://googledataapis.blogspot.com/2007/10/now-available-blogger-javascript-client.html">just announced</a> the new Blogger JavaScript client library over on the Google Data APIs Blog:<br /><blockquote>The Blogger GData JS Client library enables developers to read and write blog posts using calls to our JavaScript library. This is a full client library, with support for authenticated access to private data and read-write capabilities. Now you can create Blogger applications and mashups that can read and write data from your Blogger blogs. No server-side programming is required. Your application can run on any domain, too. No proxying is required.<br /></blockquote>We have a new <a href="http://code.google.com/apis/blogger/developers_guide_js.html">developer guide for JavaScript</a> and some <a href="http://code.google.com/apis/gdata/samples.html#JavaScript">code samples</a> to give you ideas and get you started.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-31730957428492823492007-10-19T13:40:00.000-07:002020-05-28T21:58:13.722-07:00Reporting and tracking Blogger API bugsHopefully, you’re really enjoying the Blogger API and the flexibility of being able to post to your blog using your own custom software. Sometimes things don’t work quite the way you’d expect or like and we want to hear about it.<br /><br /><span style="font-weight: bold;">If you find a bug in our Google Data API implementation, or something that we could do better, please file an issue in </span><a style="font-weight: bold;" href="http://code.google.com/p/gdata-issues/issues/list">our tracker</a><span style="font-weight: bold;">.</span><br /><br />We use this to keep track of issues with all of the <a href="http://code.google.com/apis/gdata/">Google data APIs</a>, so be sure to mention that you’re talking about Blogger when writing your description. While you’re at it, I’d like to hear about it on the <a href="http://groups.google.com/group/bloggerDev">discussion group</a> too.<br /><br />We’re going to start coordinating this external issue tracker with our internal development, so we’ll update the relevant issues if we ship fixes to them.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-1155658157997773202006-08-15T16:04:00.000-07:002020-05-28T21:58:13.607-07:00Blogger API UpdateHi folks,<br /><br />Just posting to let subscribers to this blog's feed know that new Blogger/GData documentation is <a href="http://code.google.com/apis/gdata/blogger.html">available on code.google.com</a>; please stay tuned to the <a href="http://groups.google.com/group/bloggerDev/">bloggerDev discussion list</a> for updates.<br /><br />Thanks,<br />-Eric and the Blogger Team at GoogleUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-1137094624353814562006-01-12T11:33:00.000-08:002020-05-28T21:58:13.591-07:00Blogger + Emacs = Crazy Delicious<span style="font-size:78%;">(sorry, I've been fully <a href="http://www.youtube.com/watch.php?v=IggTu7kV7No">infected</a>)</span><br /><br /><a href="http://emacsgeek.blogspot.com/2006/01/announcing-atom-blogger.html">emacsgeek</a>:<blockquote>"Announcing atom-blogger.el atom-blogger.el found at <a href="http://prdownloads.sourceforge.net/emacspeak/atom-blogger.tar.bz2">atom-blogger.tar.bz2</a> is a light-weight Emacs client for posting and editting blogger.com entries. It uses curl to handle the HTTP side of the blogger ATOM API, and relies on Emacs' support for editting XML --- either via nxml-mode or Emacs' vanila xml-mode."</blockquote>[via <a href="http://groups.google.com/group/bloggerDev/browse_thread/thread/2680d8bcea77354f/4dc65dc76564abc3">bloggerDev</a>]Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-3213900.post-1132786802252731022005-11-23T14:52:00.000-08:002020-05-28T21:58:13.575-07:00PHP Atom API Library<a href="http://dentedreality.com.au/">Beau Lebens</a> recently informed <a href="http://groups-beta.google.com/group/bloggerDev/">bloggerDev</a> that he's posted a PHP library for interacting with Atom APIs (like <a href="http://code.blogger.com/archives/atom-docs.html">Blogger's</a>): <a href="http://dentedreality.com.au/phpatomapi/">http://dentedreality.com.au/phpatomapi/</a>Unknownnoreply@blogger.com0