מתכונים בעברית
אני מנסה (ז"א צריך עזרה ב...) לאלף את המודול recipe.module (דרופל 7) להתנהג יפה עם אותיות עבריות.
מה שקורה שם זה שהמודול יוצר דף עם אינדקס שמקוטלג לפי אלף-בית, הבעיה היא שהמודול לא לוקח בחשבון שיש שפות שהאותיות שלהן לא יושבות בטווח A-Z.
מה שאני צריך בעצם זה ליצור מערך של אותיות עבריות ולרוץ עליו במקום על המערך שהמודול עובד איתו, אני מבין שעם range זה לא יעבוד וצריך לבנות את המערך בדרך אחרת, זו הפונקציה המקורית מהמודול :
<?php
function theme_recipe_name_index_page($variables) {
$alpha_list = $variables['alpha_list'];
$node_list = $variables['node_list'];
// Render the alpha pager.
$output = '<div class="recipe_name_alpha_list">';
$list = array();
foreach (range('a', 'z') as $letter ) {
if (isset($alpha_list[$letter])) {
$list[] = l(strtoupper($letter), 'recipe/byname', array('fragment' => 'alpha_' . $letter));
}
else {
$list[] = $letter;
}
}
...
?>זה לא הכל כמובן אבל נראה לי שאם נסדר את זה השאר זה בוטנים.

הי צחי כאשר אני הייתי צריך
הי צחי
כאשר אני הייתי צריך לעשות אינקדס כזה לתצוגה של טלפונים אז לא מצאתי דרך יותר אלגנטית לעשות את זה , מכיוון שאם תרוץ סדרתית אז יש אותיות סופיות ואתה לא רוצה שהם יוצגו
אז הנה קטע קוד הלא אלגנטי אבל עובד
<div class="alpha-pager">
<?php $letters=array("א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת");
echo '<a href="/phones">הכל</a>';
foreach ($letters as $letter) {
print '| <a href="/phones/'. $letter .'">';
print $letter;
print "</a>";
print " ";
}
?>
</div>
והנה התוצאה
http://shoeva.org.il/phones
במקרה שלך זה יותר בעייתי מכיוון שכל שפה תצטרך לדרוס את הפונקציה הזאת , וזה גם לא יעבוד באתר רב לשוני ...
בקיצור הדרך הכי טובה כאן היא להוציא את האותיות למשתנה , המשתנה הזה יכול להיות רב לשוני ואז יהיה לו ערך שונה בכל שפה
הפוקנציה תקח את המחרוזת של האותיות תעשה לו explode
ותציג את האותיות עם הקישורים
בהצלחה
אביאור
http://dev-art.net
מעולה, זה ענה בול לשאלה שלי,
מעולה, זה ענה בול לשאלה שלי, וגם הספר טלפונים נראה פצצה, אז נוצרה רשימת האותיות ומוצגת כמו שצריך, אבל הבעיה הבאה היא קצת יותר טריקית ממה שציפיתי -
בפונקציה הבאה הוא מנסה למצוא התאמה בין האות הראשונה של הכותרת ובין האותיות שאני מספק (א-ת0-9), הוא מוצא התאמה אבל מחזיר תוים לא קריאים, זו הפונקציה מהמודול, אני שיניתי רק את A-Za-z ל '/([אבגדהוזחטיכלמנסעפצקרשת0123456789])/'
<?phpfunction recipe_get_node_alpha_list(&$node_list = NULL) {
$alpha_list = array();
foreach ($node_list as &$n) {
$letter = '';
if ( preg_match('/([אבגדהוזחטיכלמנסעפצקרשת0123456789])/', $n['title'], $matches) ) {
$letter = strtolower($matches[1]);
}
else {
$letter = strtolower(substr($n['title'], $i, 1));
}
...
?>
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming
זה נראה שזה פשוט קשור
זה נראה שזה פשוט קשור לעברית
תנסה mb-substr
http://php.net/manual/en/function.mb-substr.php
אביאור
http://dev-art.net
מעולה ! תודה. עכשיו נעשה קצת
מעולה ! תודה.
עכשיו נעשה קצת ריטול ובקרוב גרסה עברית של המודול לכל המעוניין.
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming
אם אתה משתמש ב preg_match
אם אתה משתמש ב preg_match והתוכן הוא UTF-8 אז אתה יכול להוסיף /u כלומר
preg_match('/\p{Hebrew}+/u', $n['title'], $matches)
והוא ימצא את כל מה שיש בו אות עם פרופרטי עיברית
http://www.regular-expressions.info/unicode.html
יניב
לינווייט תשתיות תוכן קהילתיות
הי צחי, תסתכל גם במודול
הי צחי, תסתכל גם במודול pdir.module. יש שם regex שמזהה את השפה המתאימה. זה יכול גם לתת לך כיוון.
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות